乾貨 弄清楚迭代器, 生成器概念 作用

2022-04-20 08:52:27 字數 1031 閱讀 2573

1. 迭代:根據記錄的前面的元素的位置資訊 去訪問後續的元素的過程

2. 可迭代物件 iterable: 能夠被迭代訪問的物件 for in 

常用可迭代物件-list tuple str

from collections import iterable

isinstance(obj, iterable)

3. 迭代器: 可迭代物件通過__iter__方法提供乙個可以遍歷物件中資料的工具

iter(可迭代物件) 可以獲取可迭代物件的迭代器

通過迭代器可以迭代訪問 資料

next(迭代器) ***** 迭代器物件.__next__()

如果需要實現乙個迭代器 就需要實現__next__()

4. 迭代器 iterator -- 迭代器訪問可迭代物件中資料

判斷物件是否是迭代器型別

from collections import iterator

isinstance(obj, iterator)

自己實現

迭代器本身也是可迭代物件 __iter__() 提供迭代器(self)

下乙個元素的值 = next(迭代器) *****> __next__()

5. 生成器 generator

生成器是一種特殊的迭代器 --- 是迭代器 並且有自己的特點

1 建立生成器表示式 ----》 (x for x in range(100))

列表生成式 表示式

2 生成器函式

凡是有yield關鍵字的函式都不是普通函式了 而是生成器函式

6. yield關鍵字的作用

掛起當前函式 將後面表示式的值 返回到呼叫生成器的地方

接收資料 並喚醒當前函式 並且緊接著上次執行的位址繼續執行

7. 喚醒生成器的兩種方式

生成器.send("資料")

next(生成器) === 生成器.send(none)

在第一次呼叫生成器物件的是 必須使用next()

在後續的情況下 send和next可以混用

生成器 迭代器

最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...

迭代器,生成器

迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...

迭代器 生成器

迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...