1.什么是迭代器?
一句话来说:在python中,内部含有'iter'方法并且含有'next'方法的对象就是迭代器。
2.下列哪些对象是迭代器?
2.1 str,list,tup,dict,set,文件句柄
直接说答案,只有文件句柄对象是迭代器。只有其内部含有'____iter_'和'_next'方法。
3.将可迭代对象转化成迭代器。
l = [1,2,3,4]
obj = l.__iter__()
#obj = iter(l)
#这时候,就可以调用obj的__next__()方法迭代输出内部元素。
4. for循环内部机制
for循环的循环对象一定要是可迭代对象,但并不意味着可迭代对象就可以取值,因为for循环的内部机制是:将可迭代对象转换成迭代器,然后利用next进行取值,最后利用异常处理机制处理StopLieration抛出的异常。下面用while模拟for的内部循环机制。
l = [1,2,3,4,5]
# 1. 将可迭代对象转化为迭代器.
obj = iter(l)
# 2. 利用while循环,next进行取值。
while 1:
# 3. 利用异常处理终止循环。
try:
ptint(next(obj)
expect StopIteration:
break