Python叠代器(1)
阿新 • • 發佈:2017-10-07
iteration 無限 不一定 color pan 函數 style 一個數 blog
叠代對象:可直接用於for循環的對象
叠代器:可被next()函數調用並不斷返回下一個值的對象稱為叠代器
生成器是叠代器,但叠代器不一定是生成器
Python的Iterator對象表示的是一個數據流,Iterator對象可以被next()函數調用並不斷返回下一個數據,直到沒有數據拋出StopIteration錯誤。可以把這個數據流看做是一個有序序列,但我們卻不能提前知道序列的長度,只能通過next()函數實現按需計算下一個數據,所以Iterator的計算是惰性的。Iterator可以表示一個無限大的數據流,然而list、dict、str不能存儲無限大數據,所以list、dict、str默認情況下可叠代,但不是叠代器。可ton通過iter()函數將list、dict、str轉化為叠代器,例如:
1 from collections import Iterable 2 from collections import Iterator 3 4 a = [‘3‘,‘1‘,‘2‘,‘6‘] 5 print(isinstance(iter(a),Iterator)) 6 7 for i in range(4): 8 print(iter(a[i]).__next__())
輸出:
True
3
1
2
6
Python叠代器(1)