python列表生成器常用迭代器示例詳解
列表生成式基礎(chǔ)語(yǔ)法
[exp for iter_var in iterable (if conditional)]
原理:
- 首先迭代 iterable 里所有內(nèi)容,每一次迭代,都把iterable里相應(yīng)的內(nèi)容放在iter_var中,再把表達(dá)式exp應(yīng)用該iter_var的內(nèi)容,根據(jù)條件進(jìn)行篩選
- 最后用 表達(dá)式的計(jì)算值 生成一個(gè)新的列表
優(yōu)先于for和if循環(huán):
- 1、比f(wàn)or循環(huán)快得多
- 2、被認(rèn)為比循環(huán)和映射函數(shù)更具有python特性
- 3、列表生成式的語(yǔ)法更容易閱讀
1. 使用列表生成式,一行解決for循環(huán)
# 實(shí)現(xiàn)[1,2,3,4,5]的列表
alist1 = list(range(1,6))
print(alist1)
# 實(shí)現(xiàn)[1,4,9,16,25,36,49]的列表
alist2 = []
for i in range(1,8):
alist2.append(i*i)
print(alist2)
# 用一行實(shí)現(xiàn)
alist = [i*i for i in range(1,8)]
print(alist)
#結(jié)果:
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25, 36, 49]
[1, 4, 9, 16, 25, 36, 49]
2. 雙層循環(huán)
list2 = [x+y for x in range(1,5) for y in range(1,6)] #結(jié)果: [2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9]
3. 加判斷語(yǔ)句,條件過(guò)濾
list3 = [x for x in range(1,10) if x>5] print(list3) #結(jié)果: [6, 7, 8, 9]
4. 加入函數(shù)
L = ['Heli','JACK','ab'] l1 = [i.lower() for i in L] print(l1) #結(jié)果: ['heli', 'jack', 'ab']
5. 常見幾種迭代器:range、 zip 、 enumerate 、 filter 、 reduce
zip生成列表,生成字典
zip()函數(shù)接受一系列可迭代對(duì)象作為參數(shù),將不同對(duì)象中相對(duì)應(yīng)的元素打包成一個(gè)元組(tuple),返回由這些元組組成的list列表
l1 = [1,3,6]
l2 = [5,8,9]
for (x,y) in zip(l1,l2):
print(x,y,x+y)
#結(jié)果:
1 5 6
3 8 11
6 9 15
keys = ['a','c','f']
vals = [1,7,3]
D2 = {}
for (k,v) in zip(keys,vals): D2[k]=v
print(D2)
#結(jié)果:{'a': 1, 'c': 7, 'f': 3}
enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)中
enumerate(seq, [start=0]) ,返回枚舉對(duì)象
seasons = ['spring', 'summer', 'winter'] a = list(enumerate(seasons)) for i,element in enumerate(seasons): print(i,element) #結(jié)果: 0 spring 1 summer 2 winter
關(guān)于filter 、 reduce,具體可查看上一篇文章
以上就是python列表生成器常用迭代器示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python列表生成器迭代器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)周期方波信號(hào)頻譜圖
這篇文章主要介紹了python 周期方波信號(hào)頻譜圖,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python多環(huán)境切換及pyenv使用過(guò)程詳解
這篇文章主要介紹了python多環(huán)境切換及pyenv使用過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹展示方法
今天小編就為大家分享一篇在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹展示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
基于Python+OpenCV實(shí)現(xiàn)自動(dòng)掃雷功能
相信許多人很早就知道有掃雷這么一款經(jīng)典的游(顯卡測(cè)試)戲(軟件),掃雷作為一款在Windows9x時(shí)代就已經(jīng)誕生的經(jīng)典游戲,從過(guò)去到現(xiàn)在依然都有著它獨(dú)特的魅力,所以本文小編給大家介紹了如何使用Python+OpenCV實(shí)現(xiàn)自動(dòng)掃雷效果,感興趣的朋友可以參考下2023-12-12
pandas如何優(yōu)雅的列轉(zhuǎn)行及行轉(zhuǎn)列詳解
我們?cè)谧鰯?shù)據(jù)處理的時(shí)候遇到pandas列轉(zhuǎn)行的問(wèn)題,這篇文章主要給大家介紹了關(guān)于pandas如何優(yōu)雅的列轉(zhuǎn)行及行轉(zhuǎn)列的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
跟老齊學(xué)Python之關(guān)于類的初步認(rèn)識(shí)
這篇文章主要介紹了Python中關(guān)于類的一些術(shù)語(yǔ)解釋,雖然有些枯燥,但是要了解類的話,這些內(nèi)容是必須的2014-10-10
Python實(shí)現(xiàn)系統(tǒng)交互(subprocess)
我們幾乎可以在任何操作系統(tǒng)上通過(guò)命令行指令與操作系統(tǒng)進(jìn)行交互,本文實(shí)現(xiàn)了Python系統(tǒng)交互,具有一定的參考價(jià)值,感興趣的可以了解一下2021-07-07

