1迭代器(iterator)
迭代是python最強大的功能之一,是訪問集合元素的一種方式。。
迭代器是乙個可以記住遍歷的位置的物件。
迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
迭代器有兩個基本的方法:iter() 和 next()。
字串,列表或元組物件都可用於建立迭代器
#demo1
list = [1,2,3,4]
it = iter(list) #建立迭代器物件
print(next(it)) #輸出迭代器的下乙個元素
print(next(it)) #輸出迭代器的下乙個元素
print(next(it)) #輸出迭代器的下乙個元素
print(next(it)) #輸出迭代器的下乙個元素
#demo2
list=[1,2,3,4]
it = iter(list) #建立迭代器物件
for x in it:
print(x,end="")
#demo3
import sys #引入sys模組
list=[1,2,3,4]
it = iter(list) #建立迭代器
while true:
try:
print(next(it)) #s輸出迭代器的下乙個元素
except stopiteration:
sys.exit()
2生成器(generator)
在 python 中,使用了 yield 的函式被稱為生成器(generator)。
跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。
在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回yield的值。並在下一次執行 next()方法時從當前位置繼續執行。
以下例項使用 yield 實現斐波那契數列:
import sys
def fibonacci(n):#生成器函式---斐波那契
a,b,counter=0,1,0
while true:
if (counter > n):
return
yield a
a,b = b,a + b
counter+=1
f = fibonacci(10) # f 是乙個迭代器,由生成器返回生成
while true:
try:
pass
print(next(f),end=" ") #輸出迭代器的下乙個元素
except stopiteration:
sys.exit()
結論1生成器(generator)都是iterator物件,但list,dict,str雖然都是iterable,卻不是iterator
2把list,dict,str等iterable變成iterator可以使用iter()函式
參考鏈結
官方鏈結
python 迭代器,生成器 2
生成器一定是迭代器,但是迭代器不一定是生成器 isinstance 判斷乙個物件是否是 iterator 物件 in 56 from collections import iterator in 57 isinstance x for x in range 10 iterator out 57 tr...
Python 迭代器 生成器
可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...
python 迭代器,生成器
什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...