Python 列表生成器

1. 列表里生成器相比range()生成的列表

生成一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可用range(1,11)

L = range(1,11)
# print L
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

如果要生成一个[1x1, 2x2, 3x3, ..., 10x10]怎么做?用for循环

L = []
for x in range(1,11):
L.append(x*x)

# print L
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐了,列表生成器就一行语句解决问题:

L = [x*x for x in range(1,11)]
# 生成列表L=[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2. 列表生成器中也可以加上if判断

L = [x*x for x in range(1, 11) if x%2 == 0]
#print L
#[4, 16, 36, 64, 100]

该列表生成器的执行顺序是:先执行for语句,x取到值;然后执行if语句做判断;再执行数学表达式。结果存入列表中。

3. 列表生成器中使用两层循环。

L = [m+n for m in 'ABC' for n in 'XYZ']
# print L
# ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三层和三层以上的循环就很少用到了。

原文地址:https://www.cnblogs.com/haoshine/p/5093472.html