您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Python中怎么實(shí)現(xiàn)迭代器與生成器,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
函數(shù)的強(qiáng)大功能叫做迭代器,Python里面最具威力的功能之一。迭代器我們聽(tīng)起來(lái)會(huì)感覺(jué)非常陌生,在list、tuple都有用到它,我們是使用for和in取列表中的每一個(gè)元素,對(duì)每個(gè)元素依次處理,這種方法就叫做迭代,實(shí)現(xiàn)這種方法的函數(shù)叫做迭代器。迭代器中有兩個(gè)基本的函數(shù),這個(gè)函數(shù)叫做方法,這個(gè)是面向?qū)ο缶幊谭Q呼的一個(gè)方法,這兩個(gè)方法叫做iter()和next()。
1.什么是迭代?迭代是一個(gè)重復(fù)的過(guò)程,并且每次重復(fù)都是基于上一次的結(jié)果而來(lái)
2.要想了解迭代器到底是什么?必須先了解一個(gè)概念,即什么是可迭代的對(duì)象? 可迭代的對(duì)象:在python中,但凡內(nèi)置有’‘iter’'方法的對(duì)象,都是可迭代的對(duì)象
3.迭代器:迭代取值工具,可迭代的對(duì)象執(zhí)行iter方法得到的返回值就是迭代器對(duì)象
list1=[1,2,3,4] it=iter(list1)#賦值變量 print(next(it)) print(next(it)) print(next(it)) print(next(it))
list1=[1,2,3,4] it=iter(list1)#賦值變量 print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it))#except,超出列表范圍會(huì)報(bào)錯(cuò)誤信息StopIteration
每調(diào)用一次next()會(huì)輸出iter()里面的下一個(gè)元素
一直到輸出完成
超出長(zhǎng)度就會(huì)出現(xiàn)異常
我們感受到迭代器的功能的強(qiáng)大,如何自己制作一個(gè)迭代器呢?
舉例演示-簡(jiǎn)單迭代器range()函數(shù)
for i in range(10,20,2):#第一個(gè)參數(shù)是開(kāi)始參數(shù);第二個(gè)參數(shù)是結(jié)束參數(shù);第三個(gè)參數(shù)是步長(zhǎng) print(i)
如果步長(zhǎng)為小數(shù)0.5是否可以,則會(huì)返回類型錯(cuò)誤的信息
Range()函數(shù)必須是整數(shù)哦
引用yield,帶yield的函數(shù)就叫做生成器
def frange(start,stop,step): x=start#定義一個(gè)變量 while x<stop: yield x #沒(méi)有yield,while會(huì)把所有的值一次性進(jìn)行返回;yield運(yùn)行到這個(gè)位置,會(huì)暫停記錄當(dāng)前的位置,當(dāng)你再次去調(diào)用一個(gè)next的時(shí)候,會(huì)根據(jù)當(dāng)前的位置返回一個(gè)值給你 x+=step for i in frange(10,20,0.5): print(i)
關(guān)于Python中怎么實(shí)現(xiàn)迭代器與生成器就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。