简述
迭代器为类似序列的对象提供了类似序列的接口。根本上说, 迭代器就是有一个next()
方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下一个项时, 调用迭代器的 next()
方法就可以获得它. 条目全部取出后, 会引发一个 StopIteration
异常, 这并不表示错误发生, 只是告诉外部调用者, 迭代完成。
为何可以直接迭代list、set、tuple、dict
思考这个问题,为何我们可以用for直接迭代list?
以下过程
>>> list1 = [1, 2, 3]
>>> for ele in list1:
print ele
其实,它的实现是依赖迭代器实现的,只不过python帮我们封装了一下,使我们的代码更简洁。
实际执行过程(类似但不一定完全一样)
>>> list1 = [1, 2, 3]
>>> iter1 = iter(list1)
>>> while True:
try:
ele = iter1.next()
print ele
except StopIteration, e:
break
set
tuple
dict
同样的道理
创建迭代器
创建迭代器有两种方法,一种是用iter()内建函数从序列创建
,另一种是使用类
方法1
方法1不演示了,上面其实用到了:我们从一个list使用iter()函数创建了一个迭代器。
方法2
方法2待增加……