下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、什么是迭代器,Python迭代器及其用法前面章節(jié)中,已經(jīng)對(duì)列表(list)、元組(tuple )、字典(diet)、集合(set)這些序列式 容器做了詳細(xì)的介紹。值得一提的是,這些序列式容器有一個(gè)共同的特性,它們都支持使用 for循環(huán)遍歷存儲(chǔ)的元素,都是可迭代的,因此它們又有一個(gè)別稱,即迭代器。從字面來理解,迭代器指的就是支持迭代的容器,更確切的說,是支持迭代的容器類對(duì)象, 這里的容器可以是列表、元組等這些Python提供的基礎(chǔ)容器,也可以是自定義的容器類對(duì) 象,只要該容器支持迭代即可。Python實(shí)現(xiàn)自定義序列一節(jié)中,已經(jīng)學(xué)會(huì)了如何自定義一個(gè)序列類,但該序列類對(duì)象 并不支持迭代,因此還不能稱
2、之為迭代器。如果要自定義實(shí)現(xiàn)一個(gè)迭代器,那么類中必須實(shí)現(xiàn) 如下2個(gè)方法:_next_(self):返回容器的下一個(gè)元素。_iter_(self):該方法返回一迭代器(iterator)。例如,下面程序自定義了一個(gè)簡易的列表容器迭代器,支持迭代:class listDemo:def_init_(self):self._date=self._step = 0def_next_(self):7.if self._step = 0:raise Stopiterationself._step -= 1#返回下一個(gè)元素return self._dateself._stepdef_iter_(self):#
3、實(shí)例對(duì)象本身就是迭代器對(duì)象,因此直接返回self即可return self#添加元素def_setitem_(self key,value):self._date.insertfkey,value)self._step += 1mylist = listDemof)mylist0=lmylistl=2for i in mylist:print (i)程序執(zhí)行結(jié)果為:除此之外,Python內(nèi)置的iter()函數(shù)也會(huì)返回一個(gè)迭代器,該函數(shù)的語法格式如下:iter(obj, sentinel)其中,。切必須是一個(gè)可迭代的容器對(duì)象,而sentinel作為可選參數(shù),如果使用此參數(shù), 要求。切必須是一個(gè)可
4、調(diào)用對(duì)象,具體功能后面會(huì)講??烧{(diào)用對(duì)象,指的是該類的實(shí)例對(duì)象可以像函數(shù)月瞬,直接以對(duì)象名()” 的形式被使用。通過在類中添加_call_0方法,就可以將該類的實(shí)例對(duì)象 編程可調(diào)用對(duì)象。有關(guān)_call_()方法,可閱讀Python _call_()做詳細(xì)了解。我們常用的是僅有1個(gè)參數(shù)的iter()函數(shù),通過傳入一個(gè)可迭代的容器對(duì)象,我們可以獲 得一個(gè)迭代器,通過調(diào)用該迭代器中的_next_()方法即可實(shí)現(xiàn)迭代。例如;1.#將列表轉(zhuǎn)換為迭代器2.mylter = iter(l, 2, 3)3.#依次獲取迭代器的下一個(gè)元素4.print(mylter._next_()5.print(mylter._
5、next_()6.print(mylter._next_()7.print(mylter._next_()運(yùn)行結(jié)果為:Traceback (most recent call last):File C:UsersmengmaDesktopdemo.py line 7, in print(mylter._next_()Stopiteration另外,也可以使用next()內(nèi)置函數(shù)來迭代,即next(mylter)和_next_() 方法是完全一樣的。從程序的執(zhí)行結(jié)果可以看出,當(dāng)?shù)甏鎯?chǔ)的所有元素之后,如果繼續(xù)迭代,那么_next_()方法會(huì)拋出Stopiteration異常。這里介紹iter()
6、函數(shù)第2個(gè)參數(shù)的作用,如果使用該參數(shù),那么要求第一個(gè)obj參數(shù)必須 傳入可調(diào)用對(duì)象(可以不支持迭代),這樣當(dāng)使用返回的迭代器調(diào)用_next_()方法時(shí), 它會(huì)通過執(zhí)行。切()調(diào)用方法,如果該方法的返回值和第2個(gè)參數(shù)值相同,那么 輸出Stoplnteration異常;反之,那么輸出方法的返回值。例如,修改listDemo類如下所示:純文本復(fù)制class listDemo:def_init_(self):self._date=self._step = 0def_setitem_(selfkey,value):self._date.insert(key, value)self._step += 1#是該類實(shí)例對(duì)象成為可調(diào)用對(duì)象def_call_(self):self._step-=lreturn self._dateself._stepmylist = listDemof)mylist0=lmylistl=2#將mylist變?yōu)榈鱝 = iter(mylist,l)print(a._next_()print(a._next_()程序執(zhí)行結(jié)果為:Traceback (most recent call last):File D:python3.6l.py, line 20, in print(a._next_()Stopiteration輸出結(jié)果中,之所以最終拋出Stopite
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 周圍神經(jīng)病圖譜培訓(xùn)課件
- 2026年?duì)I養(yǎng)學(xué)基礎(chǔ)健康飲食與營養(yǎng)搭配知識(shí)測(cè)試題
- 2026年化工安全操作規(guī)范及應(yīng)急處置題庫
- 2026年教育行業(yè)面試教師技能考核題集
- 2026年信息技術(shù)IT基礎(chǔ)知識(shí)考核試題集
- 2026年環(huán)境治理工程師實(shí)務(wù)題庫含污染治理技術(shù)
- 2026年河北機(jī)電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫及答案1套
- 2026年懷化師范高等專科學(xué)校單招職業(yè)技能測(cè)試題庫附答案
- 2026年物流與供應(yīng)鏈管理筆試題目及答案詳解
- 2026年團(tuán)隊(duì)管理策略與實(shí)踐實(shí)操訓(xùn)練題庫
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫及參考答案詳解1套
- 2025年廣東省生態(tài)環(huán)境廳下屬事業(yè)單位考試真題附答案
- 2026年安徽省公務(wù)員考試招錄7195名備考題庫完整參考答案詳解
- 【地理】期末模擬測(cè)試卷-2025-2026學(xué)年七年級(jí)地理上學(xué)期(人教版2024)
- LoRa技術(shù)教學(xué)課件
- 統(tǒng)籌發(fā)展與安全課件
- 弱電項(xiàng)目實(shí)施管理方案
- 2025年山西省公務(wù)員考試《申論》試題及答案解析(縣鄉(xiāng)卷)
- 2025年法考客觀題真題回憶版(含答案)
- 2026年鐵嶺衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫附答案詳解
- 操作系統(tǒng)安裝與配置標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論