成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python之迭代器(iterator)

yuanzhanghu / 2969人閱讀

摘要:迭代器一個表示數(shù)據(jù)流的對象。迭代器對象本身要求支持以下組成迭代器協(xié)議的兩個方法返回迭代器對象本身。這些特定類型處于迭代器協(xié)議實現(xiàn)之外的東西,并不重要。一旦一個迭代器的方法引發(fā),在子序列調(diào)用中也必須這樣做。

迭代器(iterator)

一個表示數(shù)據(jù)流的對象。反復調(diào)用迭代器的__next__()方法(或給它傳遞內(nèi)建函數(shù)(built-in function)next())來返回在該流中的后繼項。當沒有可用數(shù)據(jù)時,產(chǎn)生一個StopInteration異常。此時,迭代器對象被耗盡,之后再調(diào)用 __next__()方法只會再次產(chǎn)生StopInteration異常。迭代器要求包含一個__iter__()方法,用于返回迭代器對象本身,因此每一個迭代器也都是可迭代的,這可被用于大多數(shù)接受可迭代(對象)的場景。一個值得注意的例外是試圖多重迭代傳遞的代碼。一個容器對象(比如說list),每次給它傳遞iter()函數(shù)或使用for循環(huán)時,產(chǎn)生一個新的迭代器。在一個迭代器中如此嘗試,通過上一個迭代的傳遞,同樣會產(chǎn)生耗盡的迭代器對象,這使它看起來像是一個空容器。

來自:Glossary — Python 3.4.2 documentation中的 iterator 部分

迭代器類型(Iterator Types)

Python支持一個容器之上的迭代的的概念。這由兩個截然不同的方法實現(xiàn),它們被用于讓用戶定義的類(user-defined classes)支持迭代。序列(Sequences),總是支持迭代方法,下面會詳細描述。

在容器對象中需要定義一個方法來提供迭代支持:

container.__iter__()
返回一個迭代器對象。此對象要求能支持下面描述的迭代協(xié)議。如果一個容器支持不同類型的迭代,額外的方法可被提供,來為這些不同類型請求指定的迭代器。(一個對象支持多種形式的迭代的,就像樹結(jié)構(gòu)支持廣度優(yōu)先和深度優(yōu)先遍歷一樣。)該方法對應(yīng)于Python/C API中的Python對象的類型結(jié)構(gòu)的tp_iter槽(slot)。

迭代器對象本身要求支持以下組成迭代器協(xié)議的兩個方法:

iterator.__iter__()
返回迭代器對象本身。這是必需的,以讓它可以在容器和迭代器中使用for語句和in語句。該方法對應(yīng)于Python/C API中的Python對象的類型結(jié)構(gòu)的tp_iter槽。

iterator.__next__()
從容器中返回下一項。如果沒有,引發(fā)StopIteration異常。該方法對應(yīng)于Python/C API中的Python對象的類型結(jié)構(gòu)的tp_iternext槽。

Python定義了多種迭代器對象來支持在通用的和特定的序列類型、字典和其他特定的形式之上的迭代。這些特定類型處于迭代器協(xié)議實現(xiàn)之外的東西,并不重要。

一旦一個迭代器的__next__()方法引發(fā)StopIteration,在子序列調(diào)用中也必須這樣做。不遵守這個屬性的實現(xiàn)被認為是失效的。

來自:4. Built-in Types — Python 3.4.2 documentation中的 Iterator Types 部分

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45334.html

相關(guān)文章

  • Python進階:設(shè)計模式迭代模式

    摘要:抓住了迭代器模式的本質(zhì),即是迭代,賦予了它極高的地位。輸出結(jié)果輸出結(jié)果小結(jié)迭代器模式幾乎是種設(shè)計模式中最常用的設(shè)計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內(nèi)置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發(fā)領(lǐng)域中,人們經(jīng)常會用到這一個概念——設(shè)...

    pubdreamcc 評論0 收藏0
  • Python進階:設(shè)計模式迭代模式

    摘要:抓住了迭代器模式的本質(zhì),即是迭代,賦予了它極高的地位。輸出結(jié)果輸出結(jié)果小結(jié)迭代器模式幾乎是種設(shè)計模式中最常用的設(shè)計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內(nèi)置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發(fā)領(lǐng)域中,人們經(jīng)常會用到這一個概念——設(shè)...

    sherlock221 評論0 收藏0
  • Python中的可迭代的對象、迭代和生成

    摘要:本文重點掌握可迭代的對象的定義掌握可迭代對象迭代器與生成器之間的關(guān)系和異同熟悉標準庫中生成器。二迭代器迭代器介紹迭代器用于從集合中取出元素的對象。若想再次迭代須重建迭代器。迭代器檢查方式調(diào)用,。區(qū)別可迭代的對象不是迭代器。 導語:本文章記錄了本人在學習Python基礎(chǔ)之控制流程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、掌握可迭代的對象的...

    starsfun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<