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']

浙公网安备 33010602011771号