python学习之高级特性-列表生成式
一,列表表达式
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
若要生成102列表,可采用循环生成
r = [] for i in range(10): r.append(i*i) r [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
若采用列表生成方法,进行获取。写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。
[X*X for X in range(1,10)] [1, 4, 9, 16, 25, 36, 49, 64, 81]
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方
[x**2 for x in range(1,11) if x % 3 ==0] [9, 36, 81]
还可以使用两层循环,可以生成全排列
[m+n for m in 'ASD' for n in 'zxcv'] ['Az', 'Ax', 'Ac', 'Av', 'Sz', 'Sx', 'Sc', 'Sv', 'Dz', 'Dx', 'Dc', 'Dv']
if ... else用法解析:在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else。仅有这样
[x if x % 2 == 0 else -x for x in range(1,11)] [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

浙公网安备 33010602011771号