午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

09.Python基礎(chǔ)--迭代器

 怡紅公子0526 2022-10-19 發(fā)布于北京

迭代器的原理:

大多數(shù)的容器都是可以用for來(lái)循環(huán)遍歷的,這種形式的訪問(wèn)清晰、簡(jiǎn)潔、方便。迭代器的用法在 Python 中普遍而且統(tǒng)一

迭代器由類來(lái)編寫(xiě)實(shí)現(xiàn)

 

迭代器的內(nèi)部工作原理?

第一.  for語(yǔ)句在容器對(duì)象中調(diào)用iter()函數(shù)

第二.  該函數(shù)返回一個(gè)定義了 __next__()方法的迭代器對(duì)象,它在容器中逐一訪問(wèn)元素

第三.  沒(méi)有后續(xù)的元素時(shí), __next__() 拋出一個(gè) Stoplteration 異常通知 for 語(yǔ)句循環(huán)結(jié)束

 

我們自建一個(gè)迭代器看看!

 

class my_dl(object):
    """Iterator for looping over a sequence backwards."""
    def __init__(self, data):
        self.begin = -1
        self.data = data
        self.index = len(data)
    def __iter__(self):
        return self
    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index -1
        self.begin += 1
        return self.data[self.begin]
rev = my_dl('yai')
iter(rev)
for char in rev: print(char)

 

 

自建迭代器,從末尾開(kāi)始迭代呢?

 

class my_dl(object):
    """Iterator for looping over a sequence backwards."""
    def __init__(self, data):
        self.data = data
        self.index = len(data)
    def __iter__(self):
        return self
    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index -1
        return self.data[self.index]
rev = my_dl('yai')
iter(rev)
for char in rev:
    print(char)

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多