手寫一個(gè)python迭代器過程詳解
更新時(shí)間:2019年08月27日 11:18:20 作者:三國小夢(mèng)
這篇文章主要介紹了手寫一個(gè)python迭代器過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
分析
- 我們都知道一個(gè)可迭代對(duì)象可以通過iter()可以返回一個(gè)迭代器。
- 如果想要一個(gè)對(duì)象稱為可迭代對(duì)象,即可以使用for,那么必須實(shí)現(xiàn)__iter __()方法。
- 在一個(gè)類的實(shí)例對(duì)象想要變成迭代器,就必須實(shí)現(xiàn)__iter__()和__next__()方法。
- 調(diào)用iter()時(shí),在對(duì)象內(nèi)部默認(rèn)調(diào)用__iter__(),即__iter__()的返回值應(yīng)該是一個(gè)迭代器。
- for的每次循環(huán)中或者next()時(shí),都是自動(dòng)調(diào)用迭代器的__next__()方法,并有一個(gè)返回值。
實(shí)現(xiàn)
class Classmate:
def __init__(self):
self.names = []
self.num = 0
def add(self, name):
self.names.append(name)
def __iter__(self):
return self
def __next__(self):
if self.num < len(self.names):
ret = self.names[self.num]
self.num += 1
return ret
else:
raise StopIteration
c = Classmate()
c.add("張三")
c.add("李四")
c.add("王五")
for i in c:
print(i)
"""
張三
李四
王五
"""
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用
Python?提供了兩個(gè)標(biāo)準(zhǔn)庫模塊來處理文件的壓縮和解壓縮操作:zipfile和tarfile,本文將分享?這兩個(gè)模塊的使用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
pandas 使用apply同時(shí)處理兩列數(shù)據(jù)的方法
下面小編就為大家分享一篇pandas 使用apply同時(shí)處理兩列數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python如何用columns參數(shù)獲取DataFrame各列的表頭名
這篇文章主要介紹了python如何用columns參數(shù)獲取DataFrame各列的表頭名問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Python機(jī)器學(xué)習(xí)之實(shí)現(xiàn)模糊照片人臉恢復(fù)清晰
GFPGAN是騰訊開源的人臉修復(fù)算法,它利用預(yù)先訓(xùn)練好的面部?GAN(如?StyleGAN2)中封裝的豐富和多樣的先驗(yàn)因素進(jìn)行盲臉?(blind?face)修復(fù)。這篇文章主要為大家介紹通過GFPGAN實(shí)現(xiàn)模糊照片人臉恢復(fù)清晰,需要的朋友可以參考一下2021-12-12
Python實(shí)現(xiàn)連點(diǎn)器的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)連點(diǎn)器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

