Python生成器、迭代器、可迭代物件

FrankYou發表於2016-08-03

把一個列表[]改成()就建立了一個生成器:generator,generator儲存的是演算法。

可以用於for迴圈的資料型別:
1、集合型別:list tuple dict set str
2、generator

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

from collections import Iterable
print(isinstance([],Iterable))
print(isinstance({},Iterable))
print(isinstance((x for x in range(10)),Iterable))
print(isinstance(100, Iterable))

結果:

True
True
True
False

可以被next呼叫並不斷返回下一個值的物件稱為:迭代器(Iterator)

from collections import Iterator
print(isinstance([],Iterator))
print(isinstance({},Iterator))
print(isinstance((x for x in range(10)),Iterator))
print(isinstance(100, Iterator))

結果:

from collections import Iterator
print(isinstance([],Iterator))
print(isinstance({},Iterator))
print(isinstance((x for x in range(10)),Iterator))
print(isinstance(100, Iterator))

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import Iterator
print(isinstance(iter([]),Iterator))
print(isinstance(iter({}),Iterator))
print(isinstance((x for x in range(10)),Iterator))
print(isinstance(iter('abc'), Iterator))

顯示結果:

True
True
True
True

相關文章