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


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