python之迭代器與生成器

2021-10-01 13:16:33 字數 880 閱讀 8596

迭代器是乙個可以記住遍歷的位置的物件.迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完,迭代器只能往前,不能退後。

迭代器有兩個基本的方法:iter()和next()

注意:

1. 迭代器只能往前取值,不會後退。

2. 用iter函式可以返回乙個可迭代物件的迭代器。

如果乙個函式中包括yield關鍵字,那麼這個函式就不再是乙個普通函式了,而是傳說中的生成器

生成器是乙個返回迭代器的函式,只能用於迭代操作,更為簡單的理解:生成器就是乙個迭代器。

在呼叫生成器的的執行過程中,每次遇到yield時函式會暫停並儲存當前所有的執行資訊,返回yield的值,並在下一次執行next()方法時從當前位置繼續執行。呼叫乙個生成器函式,返回的是乙個迭代器物件。

列表所有資料都在記憶體中,如果有海量資料的話,就會非常的耗費記憶體。比如,僅僅需要訪問前幾個元素,那後面的大多數元素占用的空間都是白白浪費的。

如果列表元素按照某種演算法推算出來,那我們就可以在迴圈過程中不斷推斷出後面的元素,這樣我們就不必建立完整的list,從而節省大量的空間。其實就一句話:我想要得到龐大的資料,又想得到龐大的資料,那就用生成器!

1.生成器能夠迭代的關鍵是它有乙個next()方法,通過重複呼叫next()方法,直到捕獲乙個異常。

2.可用nest()呼叫生成器物件來取值,next兩種方式t.next()或者next(t)。

3.yield相當於return返回乙個值,並且記錄這個返回的位置,下次迭代時,**從yield的下一條語句開始執行。

Python之迭代器與生成器

每一次對過程的重複稱為一次 迭代 而每一次迭代得到的結果會作為下一次迭代的初始值。例如 迴圈獲取容器中的元素。定義 具有 iter 函式的物件,可以返回迭代器物件。例如列表,元組 語法 建立 class 可迭代物件名稱 def iter self return 迭代器 使用 for 變數名 in 可...

Python之迭代器與生成器

容器是一種把多個元素組織在一起的資料結構,容器中的元素可以逐個地迭代獲取,可以用in,not in關鍵字判斷元素是否包含在容器中。通常這類資料結構把所有的元素儲存在記憶體中 也有一些特例,並不是所有的元素都放在記憶體,比如迭代器和生成器物件 在python中,常見的容器物件有 從技術角度來說,當它可...

Python之迭代器與生成器

可迭代物件 字面意思分析 可以重複的迭代的實實在在的東西。list,dict keys values items tuple,str,set,range,檔案控制代碼 待定 專業角度 內部含有 iter 方法的物件,就是可迭代物件。內建函式 dir print dir str 判斷乙個物件是否是可迭...