列表推导式

列表推导式的知识点:

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

 

posted @ 2017-10-29 22:30  明王不动心  阅读(202)  评论(0编辑  收藏  举报