亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

python 內置函數 Iter() 返回的 Object 類是什么樣子的?

python 內置函數 Iter() 返回的 Object 類是什么樣子的?

楊魅力 2022-11-29 15:18:58
我是 Python 的新手,我了解可迭代對象和迭代器對象的概念。我知道所有的迭代器都是迭代器本身,但并不是所有的迭代器都是迭代器,就像列表的情況一樣。我的問題是,當我們在一個沒有定義 next() 方法的可迭代對象上調用 iter() 時,幕后發生了什么。顯然 iter() 返回另一個對象, next() 方法定義了它。iter() 如何將參數作為列表并返回屬于 python 的內置 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__())上面的代碼是為了讓我自己理解內置的 iter() 如何在幕后工作以創建包含 next() 方法的對象。我將自己的 iter 函數命名為“python_iterator”(類比迭代器())。當調用此函數時,它會執行內置 iter() 將執行的操作,只是在我自己的 next() 函數 (nekst()) 中沒有用于 Stopiteration 的代碼。
查看完整描述

1 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

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


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

重要的提示


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


查看完整回答
反對 回復 2022-11-29
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號