python生成器及迭代器

2022-03-19 15:01:46 字數 1414 閱讀 7047

迭代器是訪問集合元素的一種方式

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

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

字串,列表或元組物件都可用於建立迭代器

特點:

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

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

訪問到一半時不能往回退

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

>>> li = [1,2,3]

>>> it =iter(li)

>>> print

(next(it))

1>>> print

(next(it))

2>>> print

(next(it))

3

迭代器可以使用for迴圈進行遍歷

>>> li = [1,2,3]

>>> it =iter(li)

>>> for i in

it:...

print

(i)...12

3

乙個函式呼叫時返回乙個迭代器,那這個函式就叫做生成器(generator)

如果函式中包含yield語法,那這個函式就會變成生成器

生成器運作:

當達到乙個真正的返回或者函式結束沒有更多值返回(當呼叫next()),乙個stopiteration異常就會丟擲

def

func():

yield 1

yield 2

yield 3

yield 4

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

def

frang(n):

start =0

while start yield

start

start += 1valu = frang(5)

n1 = valu.__next__

()n2 = valu.__next__

()print(n1,n2)

迭代器及生成器

user bin env python coding utf 8 1迭代器必需遵循迭代協議,需要使用iter轉換為遵循迭代協議,必須能夠使用next方法。for相當於進行了iter和next兩個方法。把序列 轉換為了可迭代序列 例1 x hellow c x.iter print type c pr...

Python 迭代器 生成器

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

python 迭代器,生成器

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