python之列表生成式

一、生成列表

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):

>>> range(1, 11)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是 循环:

L=[]

for x in range(1,11):

    L.append(x*x)

但是循环太繁琐,而列表生成式则可以用一行语句代替 循环生成上面的list:

[x*x for x in range(1,11)]

这种写法就是Python特有的列表生成式。利用列表生成 式,可以以非常简洁的代码生成 list。

写列表生成式时,把要生成的元素 x * x 放到前面,后面 跟 for 循环,就可以把list创建出来,十分有用。

二、条件过滤

列表生成式的 for 循环后面还可以加上 if 判断。例如:

如果我们只想要偶数的平方,不改动 range()的情况下, 可以加上 if 来筛选:

 

[x*x for x in range(1,11) if x %2 ==0]

三、多层表达式

for循环可以嵌套,因此,在列表生成式中,也可以用多 层 for 循环来生成列表。 对于字符串 'ABC' 和 '123' ,可以使用两层循环,生成全排 列:

[m+n for m in 'ABC' for n in '123']

posted @ 2020-11-05 16:08  夫人nn  阅读(210)  评论(0)    收藏  举报