1. 程式人生 > >Python叠代器(1)

Python叠代器(1)

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)