Python基础-列表生成式

在生成具有某些特征的数据的列表时,如果用之前介绍的方法,会很繁琐。

一个优雅美丽的方法是列表生成式(List Comprehensions)。

举个栗子:

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

b=[x for x in a if x%2==0]

b

[2,4,6,8]

c=[x*x for x in a]

c

[1,2,9,16,25,36,49,64,81,100]

还可以使用两层或以上循环:

A,B,C的全排列

a=[x+y+z for x in 'ABC' for y in 'ABC' for z in 'ABC' if x!=y and x!=z and y!=z]

a

 
 
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']


列表生成式不仅适用与列表,还可以用来生成字典或集合。


total = sum([x**2 for x in values if x <= 10])

这个例子中,Python会生成这个列表,然后在将它放到垃圾回收机制中(因为没有变量指向它),这毫无疑问是种浪费。

因此,可以使用产生式表达式来解决这个问题:

total = sum(x**2 for x in values if x <= 10)

两者的效果一样,但是后者更加高效。

猜你喜欢

转载自blog.csdn.net/keyboardwarrior/article/details/79087558