生成器 迭代器 python

2021-09-08 02:46:16 字數 708 閱讀 1947

1.迭代器

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍歷一些巨大的或是無限的集合,比如幾個g的檔案。

特點:a)訪問者不需要關心迭代器內部的結構,僅需通過next()方法或不斷去取下乙個內容

b)不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問

c)訪問到一半時不能往回退

d)便於迴圈比較大的資料集合,節省記憶體

e)也不能複製乙個迭代器。如果要再次(或者同時)迭代同乙個物件,只能去建立另乙個迭代器物件。

2.生成器

理解了迭代器以後,生成器就會簡單很多,因為生成器其實是一種特殊的迭代器。不過這種迭代器更加優雅。它不需要再像上面的類一樣寫__iter__()和__next__()方法了,只需要乙個yiled關鍵字。 生成器一定是迭代器(反之不成立),因此任何生成器也是以一種懶載入的模式生成值。

語法上說,生成器函式是乙個帶yield關鍵字的函式。

呼叫生成器函式後會得到乙個生成器物件,這個生成器物件實際上就是乙個特殊的迭代器,擁有__iter__()和__next__()方法

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...