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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 內(nèi)置函數(shù) Iter() 返回的 Object 類是什么樣子的?

python 內(nèi)置函數(shù) Iter() 返回的 Object 類是什么樣子的?

楊魅力 2022-11-29 15:18:58
我是 Python 的新手,我了解可迭代對象和迭代器對象的概念。我知道所有的迭代器都是迭代器本身,但并不是所有的迭代器都是迭代器,就像列表的情況一樣。我的問題是,當(dāng)我們在一個沒有定義 next() 方法的可迭代對象上調(diào)用 iter() 時,幕后發(fā)生了什么。顯然 iter() 返回另一個對象, next() 方法定義了它。iter() 如何將參數(shù)作為列表并返回屬于 python 的內(nèi)置 iter 類的對象,該類定義了 next() 方法。?謝謝def python_iterator(list_without_next_method):    class iter2:        def __init__(self, lst):            self.lst=lst            self.n=0        def __nekst__(self):            b=self.lst[self.n]            self.n += 1            return b    iterator_object=iter2(list_without_next_method)    return iterator_objecta=[1,2,3,4,5,6]iterator=python_iterator(a)print(iterator.__nekst__())print(iterator.__nekst__())print(iterator.__nekst__())print(iterator.__nekst__())print(iterator.__nekst__())print(iterator.__nekst__())print(iterator.__nekst__())上面的代碼是為了讓我自己理解內(nèi)置的 iter() 如何在幕后工作以創(chuàng)建包含 next() 方法的對象。我將自己的 iter 函數(shù)命名為“python_iterator”(類比迭代器())。當(dāng)調(diào)用此函數(shù)時,它會執(zhí)行內(nèi)置 iter() 將執(zhí)行的操作,只是在我自己的 next() 函數(shù) (nekst()) 中沒有用于 Stopiteration 的代碼。
查看完整描述

1 回答

?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

盡管 Python 列表是可迭代的,但我們假設(shè)它們不是:


class MyList():


    class Iterator():

        def  __init__(self, lst):

            self.lst = lst

            self.index = -1

            self.max_index = len(lst)


        def __next__(self):

            self.index += 1

            if self.index == self.max_index:

                raise StopIteration()

            return self.lst[self.index]


    def __init__(self, lst):

        self.lst = lst


    def __iter__(self):

        return MyList.Iterator(self.lst)



l = MyList([0, 1, 2])

for i in l:

    for j in l:

        print (i, j)

印刷:


0 0

0 1

0 2

1 0

1 1

1 2

2 0

2 1

2 2

重要的提示


我應(yīng)該提到,將迭代器實現(xiàn)MyList為一個單獨的類,它保持自己的迭代狀態(tài),這使您可以MyList像上面的示例一樣同時迭代多個時間的實例。


查看完整回答
反對 回復(fù) 2022-11-29
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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