• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        python函數(shù)實(shí)現(xiàn)迭代的簡單介紹

        python 如何使用生成器函數(shù)實(shí)現(xiàn)可迭代對象

        Iamlaosong文

        創(chuàng)新互聯(lián)建站10多年成都企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站建設(shè)及推廣,對葡萄架等多個領(lǐng)域擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

        我們在用for ... in ...語句循環(huán)時,in后面跟隨的對象要求是可迭代對象,即可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象(Iterable),如list、tuple、dict、set、str等。

        可迭代對象是實(shí)現(xiàn)了__iter__()方法的對象,而迭代器(Iterator)則是實(shí)現(xiàn)了__iter__()和__next__()方法的對象,可以顯示地獲取下一個元素。這種可以被next調(diào)用并不斷返回下一個值的對象稱為迭代器。迭代器一定是可迭代對象,反過來則不一定成立。用iter()函數(shù)可以把list、dict、str等Iterable變成Iterator,例如:

        bb=[x for x in range(10)]

        cc=iter(bb)

        cc.next()

        循環(huán)變量的值其實(shí)可以看著是一次次用next取值的過程,每取一個值,做一次處理。list等對象用于循環(huán)實(shí)際上可以看著是用iter()方法產(chǎn)生一個迭代器,然后循環(huán)取值。

        生成器(generator)就是一個能返回迭代器的函數(shù),其實(shí)就是定義一個迭代算法,可以理解為一個特殊的迭代器。調(diào)用這個函數(shù)就得到一個迭代器,生成器中的yield相當(dāng)于一個斷點(diǎn),執(zhí)行到此返回一個值后暫停,從而實(shí)現(xiàn)next取值。

        python中的迭代器的理解?

        9.9. 迭代器

        現(xiàn)在你可能注意到大多數(shù)容器對象都可以用 for 遍歷:

        for element in [1, 2, 3]:

        print(element)

        for element in (1, 2, 3):

        print(element)

        for key in {'one':1, 'two':2}:

        print(key)

        for char in "123":

        print(char)

        for line in open("myfile.txt"):

        print(line, end='')

        這種形式的訪問清晰、簡潔、方便。迭代器的用法在 Python 中普遍而且統(tǒng)一。在后臺, for 語句在容器對象中調(diào)用 iter() 。該函數(shù)返回一個定義了 __next__() 方法的迭代器對象,它在容器中逐一訪問元素。沒有后續(xù)的元素時, __next__() 拋出一個 StopIteration 異常通知 for 語句循環(huán)結(jié)束。你可以是用內(nèi)建的 next() 函數(shù)調(diào)用 __next__() 方法;以下是其工作原理的示例:

        s = 'abc'

        it = iter(s)

        it

        next(it)

        'a'

        next(it)

        'b'

        next(it)

        'c'

        next(it)

        Traceback (most recent call last):

        File "

        ", line 1, in ?

        next(it)

        StopIteration

        了解了迭代器協(xié)議的后臺機(jī)制,就可以很容易的給自己的類添加迭代器行為。定義一個 __iter__() 方法,使其返回一個帶有 __next__() 方法的對象。如果這個類已經(jīng)定義了 __next__() ,那么 __iter__() 只需要返回 self:

        Python基礎(chǔ)之迭代器

        一.什么是迭代器

        迭代器是用來迭代取值的工具。

        而涉及到把多個值循環(huán)取出來的類型有:列表,字符串,元組,字段,集合,打開文件等。通過使用的遍歷方式有for···in···,while等,但是,這些方式只適用于有索引的數(shù)據(jù)類型。為了解決索引取的局限性,python提供了一種 不依賴于索引的取值方式:迭代器

        注意:

        二.可迭代對象

        可迭代對象:但凡內(nèi)置有__iter__方法的都稱為可迭代對象

        常見的可迭代對象:

        1.集合數(shù)據(jù)類型,如list,tuple,dict,set,str等

        2.生成器,包括生成器和帶yield的生成器函數(shù)。

        三.如何創(chuàng)建迭代器

        迭代器是一個包含數(shù)個值的對象。

        迭代器是可以迭代的對象,這意味著您可以遍歷所有值。

        從技術(shù)上講,在Python中,迭代器是實(shí)現(xiàn)迭代器協(xié)議的對象,該協(xié)議由方法 __iter__() 和 __next__() 組成。

        簡而言之,一個類里面實(shí)現(xiàn)了__iter__()和__next__()這兩個魔法方法,那么這個類的對象就是可迭代對象。

        四.迭代器的優(yōu)缺點(diǎn)

        1.優(yōu)點(diǎn)

        2.缺點(diǎn)

        五.迭代器示例

        另外,如果類Stu繼承了Iterator,那么Stu可以不用實(shí)現(xiàn)__iter__()方法

        遍歷迭代器

        StopIteration

        如果你有足夠的 next() 語句,或者在 for 循環(huán)中使用,則上面的例子將永遠(yuǎn)進(jìn)行下去。

        為了防止迭代永遠(yuǎn)進(jìn)行,我們可以使用 StopIteration 語句。

        在 __next__() 方法中,如果迭代完成指定的次數(shù),我們可以添加一個終止條件來引發(fā)錯誤

        網(wǎng)頁名稱:python函數(shù)實(shí)現(xiàn)迭代的簡單介紹
        文章出自:http://www.jbt999.com/article6/hddhig.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司微信小程序、全網(wǎng)營銷推廣、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計公司

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

        成都app開發(fā)公司

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            国产日韩一区二区 | 久操免费看 | 国产亚洲 久一区二区 | 操碰在线视频 | 91视频成人电影 | 国产一级a毛一级a毛视频在线网站) | 免费在线黄色视频 | 黄色日逼 | 在线国产视频福利 | 囯产精品久久久久久久久久久久 |