列表推导式
列表推导式的知识点:
1.列表推导式就是利用其他列表创建新的列表。
2.支持if条件判断
3.可以使用多个for
列表推导式是利用其他列表创立新的列表,它的工作方式类似于for循环。
就像这样:
>>> [x*x for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
for循环是这样:
for m in range(10): print(m**2)
列表表推导式还支持if判断:
>>> [x*x for x in range(10) if x%3 == 0] [0, 9, 36, 81]
列表推导式可以支持多个for语句:
>>> [(x,y)for x in range(3)for y in ['kebi','maoxian','xiaoniao']] [(0, 'kebi'), (0, 'maoxian'), (0, 'xiaoniao'), (1, 'kebi'), (1, 'maoxian'), (1, 'xiaoniao'), (2, 'kebi'), (2, 'maoxian'), (2, 'xiaoniao')]
相对于for循环是这样:
result = [] name = ['kebi','maoxian','xiaoniao'] for x in range(3): for y in name: print((x,y))
有个不错的例子:有两个新的列表,要求把首字母相同的元素放在一起创建一个新的列表。
就像下面这样:
>>> girls = ['alice','bernice','clarice'] >>> boys = ['chris','arnold','bob'] >>> [b+'+'+g for b in girls for g in boys if b[0] == g[0]] ['alice+arnold', 'bernice+bob', 'clarice+chris']
在列表里面写条件就是列表推导式,在元祖里面会怎样了?
>>> (x*y for x in [1,2,3] for y in (4,5,6)) <generator object <genexpr> at 0x7f254bae0d00> :返回的是一个可迭代的对象。 >>> for i in (x*y for x in [1,2,3] for y in (4,5,6)): ... print(i) ... 4 5 6 8 10 12 12 15 18