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...