用一行语句生成一个列表:
L = [x ** 2 for x in range(5)]
type(L)
L
[0, 1, 4, 9, 16]
for循环后面还可以加上if条件判断:
L2 = [x ** 2 for x in range(5) if x > 0]
L2
[1, 4, 9, 16]
还可以使用两层循环:
L3 = [a + b for a in 'qwer' for b in 'zxcv']
L3
['qz', 'qx', 'qc', 'qv', 'wz', 'wx', 'wc', 'wv', 'ez', 'ex', 'ec', 'ev', 'rz', 'rx', 'rc', 'rv']
还有一种是这样:
L4 = [random.randint(1,10) for a in range(5)]
[3, 1, 1, 8, 3]
列表生成式其实是后面的for循环每运行一次,前面表达式就运行一次得到一个数,然后由这些数组成的列表