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

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

迭代器和枚舉器對(duì)象之間的區(qū)別

迭代器和枚舉器對(duì)象之間的區(qū)別

湖上湖 2022-10-06 15:52:06
該enumerate()函數(shù)接受一個(gè)迭代器并返回一個(gè)枚舉器對(duì)象。這個(gè)對(duì)象可以被視為一個(gè)迭代器,在每次迭代時(shí)它返回一個(gè) 2 元組,元組的第一項(xiàng)是迭代號(hào)(默認(rèn)從 0 開(kāi)始),第二項(xiàng)是迭代器中的下一項(xiàng)enumerate()被調(diào)用。引用自“Python 3 中的編程:Python 語(yǔ)言的完整介紹。我是 Python 新手,從上面的文字中并不真正理解它的含義。但是,根據(jù)我對(duì)示例代碼的理解,枚舉器對(duì)象返回一個(gè)帶有索引號(hào)和迭代器值的 2 元組。我對(duì)嗎?迭代器和枚舉器有什么區(qū)別?
查看完整描述

1 回答

?
精慕HU

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

您對(duì)其最終作用的理解是正確的,但該引文中的措辭具有誤導(dǎo)性?!懊杜e器”(不是真正的標(biāo)準(zhǔn)術(shù)語(yǔ))和迭代器之間沒(méi)有區(qū)別,或者更確切地說(shuō),“枚舉器”是一種迭代器。enumerate返回一個(gè)enumerate對(duì)象,類enumerate也是:


>>> enumerate

<class 'enumerate'>

>>> type(enumerate)

<class 'type'>

>>> enumerate(())

<enumerate object at 0x10ad9c300>

就像其他內(nèi)置類型一樣list:


>>> list

<class 'list'>

>>> type(list)

<class 'type'>

>>> type([1,2,3]) is list

True

或自定義類型:


>>> class Foo:

...     pass

...

>>> Foo

<class '__main__.Foo'>

<class 'type'>

>>> type(Foo())

<class '__main__.Foo'>

>>>

enumerate對(duì)象是迭代器。并不是說(shuō)它們可以被“視為”迭代器,它們是迭代器,迭代器是滿足以下條件的任何類型:它們定義了 a__iter__和__next__:


>>> en = enumerate([1])

>>> en.__iter__

<method-wrapper '__iter__' of enumerate object at 0x10ad9c440>

>>> en.__next__

<method-wrapper '__next__' of enumerate object at 0x10ad9c440>

并且iter(iterator) is iterator:


>>> iter(en) is en

True

>>> en

<enumerate object at 0x10ad9c440>

>>> iter(en)

<enumerate object at 0x10ad9c440>

看:


>>> next(en)

(0, 1)

現(xiàn)在,具體來(lái)說(shuō),它本身并不返回索引值,而是返回一個(gè)二元組,其中包含傳入的迭代中的下一個(gè)值以及單調(diào)遞增的整數(shù),默認(rèn)情況下從 開(kāi)始0,但它可以采用start參數(shù),并且傳入的迭代不必是可索引的:


>>> class Iterable:

...     def __iter__(self):

...         yield 1

...         yield 2

...         yield 3

...

>>> iterable = Iterable()

>>> iterable[0]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'Iterable' object is not subscriptable

>>> list(enumerate(iterable))

[(0, 1), (1, 2), (2, 3)]

>>> list(enumerate(iterable, start=1))

[(1, 1), (2, 2), (3, 3)]

>>> list(enumerate(iterable, start=17))

[(17, 1), (18, 2), (19, 3)]


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

添加回答

舉報(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)