python 迭代器和生成器

2021-08-01 23:55:29 字數 1440 閱讀 8223

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

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

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

訪問到一半時不能往回退

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

>>> a = iter([1,2,3,4,5])

>>> a

>>> a.__next__()

1>>> a.__next__()

2>>> a.__next__()

3>>> a.__next__()

4>>> a.__next__()

5>>> a.__next__()

traceback (most recent call last):

file "", line 1, in stopiteration

乙個函式呼叫時返回乙個迭代器,那這個函式就叫做生成器(generator);如果函式中包含yield語法,那這個函式就會變成生成器;

def func():

yield 1

yield 2

yield 3

yield 4

上述**中:func是函式稱為生成器,當執行此函式func()時會得到乙個迭代器。

>>> temp = func()

>>> temp.__next__()

1>>> temp.__next__()

2>>> temp.__next__()

3>>> temp.__next__()

4>>> temp.__next__()

traceback (most recent call last):

file "", line 1, in stopiteration

3、例項

a、利用生成器自定義range

def nrange(num):

temp = -1

while true:

temp = temp + 1

if temp >= num:

return

else:

yield temp

注:1. 生成器的作用是儲存上一次的執行狀態,每次遇到yield就退出,再次迭代時接著上次的yield執行直到下乙個yield。

2. 一旦函式中存在yield時,呼叫函式時不執行內容(沒有yield的函式都會執行),只有迭代的時候才執行內容。

Python迭代器和生成器

先說迭代器,對於string list dict tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter 函式,iter 是python的內建函式。iter 會返回乙個定義了next 方法的迭代器物件,它在容器中逐個訪問容器內元素,next 也是python的...

Python迭代器和生成器

迭代器是訪問集合元素的一種方法 是可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問 他有兩個基本的方法,iter 和next 字串,列表或遠足物件都可以用於建立迭代器 list1 1,2,3,4 it1 iter list1 建立迭代器物件 print next ...

Python 迭代器和生成器

迭代器 iterator 什麼是迭代器 迭代器是訪問可迭代物件的一種方式,用迭代器可以訪問可迭代物件 迭代器是指iter 可迭代物件 返回的物件 迭代器可以用next it 函式獲取可迭代物件的資料 迭代器函式 iter 和 next iter iterable 從可迭代物件中返回乙個迭代器,ite...