1. 程式人生 > 實用技巧 >python之 迭代器

python之 迭代器

可迭代物件

可以直接作用於for迴圈的物件統稱為可迭代物件:Iterable

以直接作用於for迴圈的資料型別有以下幾種:

一類是集合資料型別,如listtupledictsetstr等;

一類是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)物件,但listdictstr雖然是可迭代物件Iterable,卻不是迭代器Iterator

listdictstrIterable變成Iterator可以使用iter()函式:

# from collections.abc import Iterator
# a=isinstance(iter([]), Iterator) # print(a)

小結

凡是可作用於for迴圈的物件都是Iterable型別;

凡是可作用於next()函式的物件都是Iterator型別,它們表示一個惰性計算的序列;

集合資料型別如listdictstr等是Iterable但不是Iterator,不過可以通過iter()函式獲得一個Iterator物件。