python中的列表生成式_Python中的列表生成式
列表生成式
拋出一個問題,創建一個從1到100的列表,該怎么寫:
while
li = []
i = 1
while i <= 100:
li.append(i)
i += 1
print(li)
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)]
但是不建議超過三層嵌套
總結
以上是生活随笔為你收集整理的python中的列表生成式_Python中的列表生成式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个室内篮球馆的造价要多少?
- 下一篇: 小薇是谁画的呢?