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]

 

posted @ 2020-10-17 15:36  上虞牧之  阅读(81)  评论(0)    收藏  举报