第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

構(gòu)建一個(gè)基本的Python Iterator

構(gòu)建一個(gè)基本的Python Iterator

紅糖糍粑 2019-06-06 16:14:31
構(gòu)建一個(gè)基本的Python Iterator如何在python中創(chuàng)建迭代函數(shù)(或迭代器對(duì)象)?
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

python中的Iterator對(duì)象符合迭代器協(xié)議,這基本上意味著它們提供了兩種方法:__iter__()next()..這個(gè)__iter__返回迭代器對(duì)象,并在循環(huán)開(kāi)始時(shí)隱式調(diào)用。這個(gè)next()方法返回下一個(gè)值,并在每個(gè)循環(huán)增量處隱式調(diào)用。next()在沒(méi)有更多值可返回時(shí)引發(fā)StopIteration異常,循環(huán)構(gòu)造將隱式捕獲該異常以停止迭代。

下面是一個(gè)簡(jiǎn)單的計(jì)數(shù)器示例:

class Counter:
    def __init__(self, low, high):
        self.current = low
        self.high = high    def __iter__(self):
        return self    def next(self): # Python 3: def __next__(self)
        if self.current > self.high:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1for c in Counter(3, 8):
    print c

這將打?。?/trans>

3
4
5
6
7
8

正如前面的答案所述,使用生成器編寫這一內(nèi)容更容易:

def counter(low, high):
    current = low    while current <= high:
        yield current
        current += 1for c in counter(3, 8):
    print c

印刷輸出將是相同的。在引擎蓋下,生成器對(duì)象支持迭代器協(xié)議,并執(zhí)行類似于類計(jì)數(shù)器的操作。

大衛(wèi)·默茨的文章迭代器和簡(jiǎn)單生成器是個(gè)很好的介紹。


查看完整回答
反對(duì) 回復(fù) 2019-06-06
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

首先迭代工具模塊對(duì)于迭代器可能有用的各種情況,都是非常有用的,但下面是在python中創(chuàng)建迭代器所需的全部?jī)?nèi)容:

產(chǎn)量

這不是很酷嗎?產(chǎn)量可以用來(lái)代替正常值回歸在一個(gè)函數(shù)中。它同樣返回對(duì)象,但它不是銷毀狀態(tài)和退出,而是保存狀態(tài),以便在您想要執(zhí)行下一次迭代時(shí)使用。下面是直接從迭代工具函數(shù)列表:

def count(n=0):
    while True:
        yield n
        n += 1

如函數(shù)描述中所述(這是計(jì)數(shù)()),它生成一個(gè)迭代器,返回從n開(kāi)始的連續(xù)整數(shù)。

生成器表達(dá)式是另一罐蠕蟲(chóng)(可怕的蟲(chóng)子!)它們可以代替列表理解為了節(jié)省內(nèi)存(列表理解在內(nèi)存中創(chuàng)建一個(gè)列表,如果不分配給變量,則在使用后銷毀,但是生成器表達(dá)式可以創(chuàng)建生成器對(duì)象.這是一種別出心裁的說(shuō)法。下面是生成器表達(dá)式定義的示例:

gen = (n for n in xrange(0,11))

這與上面迭代器的定義非常相似,除非整個(gè)范圍預(yù)定在0到10之間。

我剛找到xrange()(得知我以前沒(méi)見(jiàn)過(guò).)并將其添加到上面的示例中。xrange()的可迭代版本。范圍()它的優(yōu)點(diǎn)是沒(méi)有預(yù)先建立列表。如果您有一個(gè)龐大的數(shù)據(jù)集來(lái)迭代,并且只有這么多的內(nèi)存可以執(zhí)行,這將是非常有用的。


查看完整回答
反對(duì) 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 630 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)