python 中的迭代器和生成器

2021-10-10 22:44:48 字數 830 閱讀 8040

可迭代物件

可以被for迭代的物件,都是可迭代物件

物件有__iter__方法的,都是可迭代物件。(__iter__方法要求返回值必須是乙個 「迭代器」 (返回值必須有__next__方法))

迭代就要掉用__next__方法

常見的可迭代物件:

list

strtuple

迭代器

生成器

場景一:我需要999999999999999個數字,一下子把1~999999999999999放到乙個list中

場景二:我需要999999999999999個數字,你需要1 的時候,我生成1,你需要 2 的時候,我生成 2 … 生成2的時候,前面的會被收回

生成器是什麼?

因為迭代器手工實現比較麻煩 所以python提供了生成器物件

生成器的目的

目的:獲得迭代器物件(非常高效)

如何建立生成器物件?

通過 yield 關鍵字

yield關鍵字:

yield 和return 的區別

yield 跳出會記住執行的位置,暫時跳出,還回進來

return 直接跳出函式,不會再執行

生成器為什麼會省記憶體?

是因為有:__next__

生成器是為了快速獲得含有__iter____next__的方法

python中迭代器和生成器

迭代器 迭代器的實質是實現了next 方法的物件,常見的元組 列表 字典都是迭代器。迭代器中重點關注兩種方法 iter 方法 返回迭代器自身。可以通過python內建函式iter 呼叫。next 方法 當next方法被呼叫的時候,迭代器會返回它的下乙個值,如果next方法被呼叫,但迭代器沒有只可以返...

python中迭代器和生成器

1 迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。迭代器有兩個基本...

python中迭代器和生成器

這裡的迭代可以指for迴圈,在python中,對於像list,dict和檔案等而言,都可以使用for迴圈,但是它們並不是迭代器,它們屬於可迭代物件。1.1什麼可迭代物件 最簡單的解釋 可以使用for.in.語句進行迴圈的物件,就是可迭代物件 iterable 可以使用isinstance 方法進行判...