1.迭代器
1.什么是迭代器(iter)
迭代器是容器型數(shù)據(jù)類型,只能通過類型轉(zhuǎn)換和生成器來獲得迭代器對象
迭代器存儲(chǔ)數(shù)據(jù)的特點(diǎn):同時(shí)可以保存多個(gè)數(shù)據(jù),沒有辦法直接查看,而是需要先將數(shù)據(jù)從迭代器中取出(取出后不能再放回去)
所有的容器都可以轉(zhuǎn)換成迭代器
2.獲取迭代器中的元素
無論通過什么方式,只要將迭代器中某個(gè)元素拿到了,這個(gè)元素就不再存在了
1.遍歷
2.獲取單個(gè)元素
next(迭代器對象) - 獲取迭代器中的元素(最前面的那個(gè)元素)
2.生成式
生成式就是生成器的簡寫
列表推導(dǎo)式的[]變成()就變成了生成式
# 列表推導(dǎo)式:
list1 = [x + 2 for x in range(5)]
print(list1)
# 生成式:
gen1 = (x + 2 for x in range(5))
print(list(gen1))
3.生成器
1.什么是生成器
生成器就死迭代器
調(diào)用一個(gè)帶yield 關(guān)鍵字的函數(shù)就可以生成一個(gè)生成器
2.生成器產(chǎn)生數(shù)據(jù)
生成器能生產(chǎn)多少數(shù)據(jù)就看執(zhí)行生成器對應(yīng)的函數(shù)的函數(shù)體會(huì)遇到幾次yield。yield后面表達(dá)式的值就是生成器能夠產(chǎn)生的數(shù)據(jù)
3.生成器產(chǎn)生數(shù)據(jù)的原理
當(dāng)獲取生成器元素的時(shí)候,會(huì)自動(dòng)調(diào)用生成器關(guān)聯(lián)的函數(shù),第一次從函數(shù)開始的地方開始執(zhí)行,直到遇到y(tǒng)ield為止,并且將yield后面的值作為獲取到的數(shù)據(jù),后面每次都是從上一次結(jié)束的位置開始執(zhí)行,直到遇到y(tǒng)ield,如果從開始執(zhí)行到函數(shù)結(jié)束都沒有遇到y(tǒng)ield,就不會(huì)產(chǎn)生數(shù)據(jù)