python之 迭代器
阿新 • • 發佈:2020-11-28
可迭代物件
可以直接作用於for
迴圈的物件統稱為可迭代物件:Iterable
。
以直接作用於for
迴圈的資料型別有以下幾種:
一類是集合資料型別,如list
、tuple
、dict
、set
、str
等;
一類是generator
,包括生成器和帶yield
的生成器(generator)、 function。
可以使用isinstance()
判斷一個物件是否是Iterable
物件
# from collections.abc import Iterable # a=isinstance([],Iterable) # print(a) # b=isinstance('ABF', Iterable) #print(b) # c=isinstance(123,Iterable) # print(c) # d=isinstance((x for x in range(10)),Iterable) # print(d)
可以被next()
函式呼叫並不斷返回下一個值的物件稱為迭代器:Iterator
生成器都是迭代器(Iterator)
物件,但list
、dict
、str
雖然是可迭代物件Iterable
,卻不是迭代器Iterator
。
把list
、dict
、str
等Iterable
變成Iterator
可以使用iter()
函式:
# from collections.abc import Iterator# a=isinstance(iter([]), Iterator) # print(a)
小結
凡是可作用於for
迴圈的物件都是Iterable
型別;
凡是可作用於next()
函式的物件都是Iterator
型別,它們表示一個惰性計算的序列;
集合資料型別如list
、dict
、str
等是Iterable
但不是Iterator
,不過可以通過iter()
函式獲得一個Iterator
物件。