迭代器 迭代是Python最強大的功能之一,是訪問集合元素的一種方式。。 迭代器對象是一個可以記住遍歷的位置的對象。 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。 迭代器有兩個基本的方法:iter() 和 next()。 字元串,列表或元組對象都可用於創 ...
迭代器
迭代是Python最強大的功能之一,是訪問集合元素的一種方式。。
迭代器對象是一個可以記住遍歷的位置的對象。
迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
迭代器有兩個基本的方法:iter() 和 next()。
字元串,列表或元組對象都可用於創建迭代器。
例:
list = [1, 2, 3, 4]
it = iter(list) #創建迭代器對象
print(next(it)) #輸出迭代器的下一個元素
for i in it: #for迴圈遍歷
print(i, end=" ")
結果:1
2 3 4
也可以:
import sys
list = [1, 2, 3, 4]
it = iter(list)
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
結果:
1
2
3
4
生成器
在 Python 中,使用了 yield 的函數被稱為生成器(generator)。
跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作。
更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回yield的值。
併在下一次執行 next()方法時從當前位置繼續運行。
以下實例使用 yield 實現斐波那契數列:
import sys
def fibonaqie(n): #生成器函數-斐波那契數列
a, b, counter = 0, 1, 0
while True:
if(counter > n):
return
yield a
a, b = b, a + b
counter += 1
fi = fibonaqie(10) #fi 是一個迭代器,由生成器返回
while True:
try:
print(next(fi),end=" ")
except StopIteration:
sys.exit()
結果:0 1 1 2 3 5 8 13 21 34 55