列表生成式
列表生成式的全称是list comprehensions。是python中内置的一种快速生成新列表的方法。可以由一个列表推导出另外一个新的列表。
- 比如如果我们想要生成一个这样的列表:
[1*1.2*2,3*3,4*4,…………10*10]
,如果采用一般的循环的方法,代码应该这样来写:
lst = []
for i in range(1,11):
lst.append(i*i)
print(lst)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
-
但是如果采用列表生成式的话,我们就可以采用一种更为简单的方法来进行操作:
[x*x for x in range(1,11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
上面这句代码在执行的时候,首先执行 for
循环的语句,然后再执行x*x
。
-
复杂一点的,还可以在for循环中添加限制条件:
[x*x for x in range(1,11) if x % 2 == 0] [4, 16, 36, 64, 100]
这样的话,就只选择了偶数来进行操作。
-
除了上述添加判断条件的使用方法之外,还可以在列表中添加多个循环条件,比如:
[a + b for a in 'qr' for b in '14'] ['q1', 'q4', 'r1', 'r4']
大家可以发现,当添加多个循环结构后,结果呈现了全排列的样式。
-
for 循环其实可以同时循环多个变量,比如当for进行字典循环时:
dic = {'a':123,"b":456,"c":789} [m + str(n) for m,n in dic.items()] ['c789', 'b456', 'a123']
感谢廖雪峰老师的博客,谢谢廖老师的无私分享!