Python學習-迭代器

凡是可作用於for循環的對象都是Iterable類型;
凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列

集合數據類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象

#coding=UTF-8
from collections import Iterable
from collections import Iterator
#可以直接作用於for循環的對象統稱爲可迭代對象:Iterable
#可以使用isinstance()判斷一個對象是否是Iterable對象
isinstance([], Iterable)
isinstance({}, Iterable)
isinstance('abc', Iterable)
isinstance((x for x in range(10)), Iterable)
isinstance(100, Iterable)

#而生成器不但可以作用於for循環,還可以被next()函數不斷調用並返回下一個值
#可以被next()函數調用並不斷返回下一個值的對象稱爲迭代器:Iterator。
#可以使用isinstance()判斷一個對象是否是Iterator對象:
isinstance((x for x in range(10)), Iterator)
isinstance([], Iterator)
isinstance({}, Iterator)
isinstance('abc', Iterator)

#生成器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。
#把list、dict、str等Iterable變成Iterator可以使用iter()函數:
print isinstance('abc', Iterator)
print isinstance(iter('abc'),Iterator)
print iter('abc').next()

#複習一下生成器打印結果:
#<type 'list'>
#<type 'generator'>
L=[x for x in range (10)]
G=(x for x in range (10))
print type(L)
print type(G


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章