可以被next()函式呼叫並不斷返回下乙個值的物件稱為迭代器 iterator
生成器是迭代器,但迭代器不一定是生成器
把可迭代物件(比如list,dict,str)變成迭代器的方法是 iter()
python 的 iterator物件表示的是資料流,資料流可以看做是乙個有序序列,
iterator只有在需要下乙個資料的時候才會計算
iterator 可以表示乙個無限大的資料流,比如說全體自然數。之所以可以表示,是因為
只有在需要的時候才會計算下乙個自然數的值,而不會儲存全部自然數
from collections import iterable,iterator
iterable:可迭代
iterator:迭代器
#可迭代物件
a = isinstance([1,2,3],iterable)
b = isinstance('123',iterable)
c = isinstance((1,2,3),iterable)
d = isinstance(set([1,2,3]),iterable)
e = isinstance(,iterable)
print(a,b,c,d,e)
#true true true true true
isinstance(a,b),是檢查a物件是否是b型別的示例以上可以見得,list str tuple set dict都是可迭代物件
a = isinstance([1,2,3],iterator)
b = isinstance('123',iterator)
c = isinstance((1,2,3),iterator)
d = isinstance(set([1,2,3]),iterator)
e = isinstance(,iterator)
print(a,b,c,d,e)
#false false false false false
說明他們只是可迭代物件,並非迭代器
a = isinstance(iter([1,2,3]),iterator)
b = isinstance(iter('123'),iterator)
c = isinstance(iter((1,2,3)),iterator)
d = isinstance(iter(set([1,2,3])),iterator)
e = isinstance(iter(),iterator)
print(a,b,c,d,e)
#true true true true true
如上,我們可以參考乙個可迭代物件,生成乙個迭代器
#迭代器函式
def fib(num):
#斐波拉契數列
a,b = 0,1
for i in range(num):
yield b
a,b = b,a+b
gen = fib(10)
a = isinstance(gen,iterator)
print(a)
#true
可以說明迭代器函式生成的的確是迭代器 python 迭代器 python迭代器
迭代器 可以直接作用for迴圈的資料型別 我們已經知道,可以直接作用for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 可迭代物件定義 這些可以直接作用fo...
python的迭代器 Python 迭代器
迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...
python的迭代器 python 迭代器
在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...