Python3之手動(dòng)創(chuàng)建迭代器的實(shí)例代碼
迭代器即可以遍歷諸如列表,字典及字符串等序列對(duì)象甚至自定義對(duì)象的對(duì)象,其本質(zhì)就是記錄迭代對(duì)象中每個(gè)元素的位置。迭代過(guò)程從第一個(gè)元素至最后一個(gè)元素,且過(guò)程不能回滾或反方向迭代。
兩個(gè)基本方法iter、next
序列對(duì)象可以利用 iter() 直接創(chuàng)建迭代器,并通過(guò) next() 即可迭代迭代器。
利用for循環(huán)迭代
S = 'PYTHON' IT = iter(S) for it in IT: print(it)
示例結(jié)果:
P
Y
T
H
O
N
利用next()迭代
S = 'PYTHON' IT = iter(S) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT))
示例結(jié)果:
P
Y
T
H
O
N
當(dāng)我們使用next()迭代時(shí),如果迭代了次數(shù)超過(guò)了迭代器中的元素個(gè)數(shù)就會(huì)引發(fā) StopIteration ,由此我們可以利用 while 循環(huán)迭代,并不斷捕捉迭代結(jié)束的異常完成for循環(huán)的迭代過(guò)程。
S = 'PYTHON'
IT = iter(S)
while True:
try:
print(next(IT))
except StopIteration:
break
P
Y
T
H
O
N
手動(dòng)構(gòu)建迭代器
把一個(gè)類作為一個(gè)迭代器使用需要在類中實(shí)現(xiàn)兩個(gè)方法 iter () 與 next () 。 iter () 方法返回一個(gè)特殊的迭代器對(duì)象, 這個(gè)迭代器對(duì)象實(shí)現(xiàn)了 next () 方法并通過(guò) StopIteration 異常標(biāo)識(shí)迭代的完成。 next () 方法(Python 2 里是 next())會(huì)返回下一個(gè)迭代器對(duì)象。下面這個(gè)類構(gòu)造了一個(gè)迭代器接受一個(gè)可迭代的數(shù)字,每次迭代都返回上一次迭代結(jié)果的平方,當(dāng)?shù)Y(jié)果大于 9999999999999 時(shí)拋出異常。利用該類創(chuàng)建示例對(duì)數(shù)字2進(jìn)行平方和迭代。
class IT_SQUARE:
def __init__(self, x):
self.x = x
def __next__(self):
self.x = self.x ** 2
if self.x > 9999999999999:
raise StopIteration
else:
return self.x
def __iter__(self):
return self
IT1 = IT_SQUARE(2)
while True:
try:
print(IT1.__next__())
except StopIteration:
break
示例結(jié)果
4
16
256
65536
4294967296
總結(jié)
以上所述是小編給大家介紹的Python3之手動(dòng)創(chuàng)建迭代器的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
解讀torch.cuda.amp自動(dòng)混合精度訓(xùn)練之節(jié)省顯存并加快推理速度
這篇文章主要介紹了torch.cuda.amp自動(dòng)混合精度訓(xùn)練之節(jié)省顯存并加快推理速度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python合并多個(gè)Excel數(shù)據(jù)的方法
這篇文章主要介紹了Python合并多個(gè)Excel數(shù)據(jù)的方法也就是說(shuō)將多個(gè)excel中的數(shù)據(jù)合并到另一個(gè)表中,本文通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
Flask學(xué)習(xí)筆記之日志操作配置實(shí)例講解
這篇文章主要為大家介紹了Flask學(xué)習(xí)筆記之日志操作配置實(shí)例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
使用?OpenAI?API?和?Python?使用?GPT-3的操作方法
這篇文章主要介紹了使用?OpenAI?API?和?Python?使用?GPT-3,在本文中,我們將使用?GPT-3。我將向您展示如何訪問(wèn)它,并提供一些示例來(lái)說(shuō)明您可以使用它做什么,以及您可以使用它構(gòu)建什么樣的應(yīng)用程序,需要的朋友可以參考下2023-03-03
python實(shí)現(xiàn)簡(jiǎn)單的socket server實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的socket server的方法,實(shí)例分析了Python中socket的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
關(guān)于Python字典的底層實(shí)現(xiàn)原理
這篇文章主要介紹了關(guān)于Python字典的底層實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python實(shí)現(xiàn)準(zhǔn)確獲取PDF文件中的標(biāo)題
想要在PDF文件中,解析獲取全部的標(biāo)題,是一件比較麻煩的事情,這篇文章將介紹一種較為準(zhǔn)確的提取標(biāo)題的方式,感興趣的小伙伴可以了解一下2024-02-02
python使用點(diǎn)操作符訪問(wèn)字典(dict)數(shù)據(jù)的方法
這篇文章主要介紹了python使用點(diǎn)操作符訪問(wèn)字典(dict)數(shù)據(jù)的方法,涉及Python操作字典的技巧,需要的朋友可以參考下2015-03-03

