一. 迭代器
-
可迭代物件:可以使用for迴圈的物件叫做可迭代物件。例子:
for i in [1, 2, 3]: print(i) test_dict = {'name': 'allen', 'age': 17} for key, value in test_dict.items(): print(key, value) 複製程式碼
-
迭代器:可以被next()函式呼叫並不斷返回下一個值的物件稱為迭代器。
-
iter:列表,字典都可以叫做可迭代物件,但是他們不是迭代器,如果要將它們變成迭代器,就要使用iter()函式,例子:
test_list = [1,2,3,4] iter_test_list = iter(test_list) print(next(iter_test_list)) print(next(iter_test_list)) print(next(iter_test_list)) print(next(iter_test_list)) print(next(iter_test_list)) 複製程式碼
每次呼叫next函式,迭代器會返回下一個值,如果下一個值沒有,那麼就會報錯。
二. 生成器
生成器是一個返回迭代器的函式,在Python中使用了 yield 的函式被稱為生成器。
range函式可以生成一個整數序列,但是它的step(步長)引數,只能是整數。如果想要step為浮點數要怎麼實現?
# 實現
def float_range(start, stop, step):
x = start
while x < stop:
yield x
x += step
複製程式碼
注意例子中的yield關鍵字,在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。