我爱编程Python相关

Python中的列表生成式

2018-06-21  本文已影响17人  DeeJay_Y

列表生成式

抛出一个问题,创建一个从1到100的列表,该怎么写:

  1. while
li = []
i = 1
while i <= 100:
    li.append(i)
    i += 1

print(li)
  1. for
li = []

for i in range(1,101):
    li.append(i)

print(li)

关于range()用法特别类似于切片操作,是用来生成列表的,在Python2中,返回的是列表,而且如果指定了一个特别大的列表,占用内
存会很高

但是在Python3中,range()返回的不再是列表,并且只有在需要的时候在生成对应的列表,从而解决了Python2中的问题。

用法

li = [i for i in range(1,10)]

print(li) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

上述例子就是一个列表生成式,其中最左边的这个i代表着每次插入列表的值,而后面的for i in range(1,10)则代表着这个列表循环插值多少次,即列表长度。

li2 = [1 for i in range(1,10)]

print(li2) # [1, 1, 1, 1, 1, 1, 1, 1, 1]

这次插入的值为固定值1,所以li2为上例输出的结果。

列表生成式中也可以通过if来进行筛选:

li3 = [i for i in range(1,10) if i%2 ==0]

print(li3) # [2, 4, 6, 8]

通过if 筛选了偶数项

同时列表生成式还支持循环嵌套:

li4 = [i for i in range(3) for j in range(2)]

print(li4) # [0, 0, 1, 1, 2, 2]

两层嵌套,可以写的更直观一点,插入一个元祖看一下:

li5 = [(i,j) for i in range(3) for j in range(2)]

print(li5) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]

但是不建议超过三层嵌套

上一篇下一篇

猜你喜欢

热点阅读