生成器AND迭代器

2021-10-05 13:57:35 字數 860 閱讀 6662

生成器

定義:生成器(函式),能夠記住上一次呼叫後返回時在函式體中的位置,對生成器函式的第二次(第n次)

呼叫跳轉至函式中暫停的yield處並且繼續執行(同時所用區域性變數資料的值都會儲存在第一次呼叫之後的狀態)

迭代器

定義:可以被next()函式呼叫並且不斷返回下乙個值的物件就是迭代器物件iterator

1、是訪問集合的一種方式,可以記住遍歷的位置

2、從集合的第乙個元素開始訪問直到最後乙個元素結束

3、只能前進不能後退

可以迭代的物件:

容器:字串、列表、元組、字典、集合

生成器:generator

判斷乙個物件是否是可迭代物件或者是迭代器

from collections import iterable,iterator

print(isinstence(物件,interable))-----判斷物件是否是可迭代物件,結果為true是可迭代物件,false為不是

print(isinstence(物件,interator))-----判斷物件是否是迭代器,結果為true是迭代器,false為不是

iter()函式:

在上面的可迭代物件中除了生成器是真正的迭代器之外,其他的全是偽迭代器

但是可迭代物件可以通過iter()函式將其轉換為迭代器

總結:凡是可以用於for迴圈的物件都是可迭代物件(iterable)

凡是可以用next()函式呼叫的物件都是迭代器(iterator)

iterable 可以通過iter(物件)函式轉換為iterator

迭代器的好處:

「流式」資料處理,有效減少記憶體的消耗

生成器 迭代器

最近見天一直在看廖大的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...