python——迭代器

1.什么是迭代器协议

  (1)迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走不能往前退)

  (2)可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)

  (3)协议:协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环、sum、min、max函数等)使用迭代器协议访问对象

2.python中强大的for循环机制

  (1)for循环的本质:循环所有对象,全部使用迭代器协议

  (2)(字符串、列表、元组、字典、集合、文件对象)这些都不是可迭代对象,只不过在for循环中,调用了他们内部的 __iter__ 方法,把他们变成了可迭代对象

      然后for循环调用可迭代对象的 __next__ 方法去取值,而且for循环会捕捉StopIteration异常,以终止迭代

    用while循环模拟for循环

l = [1,2,3,4,5]
diedai_l=l.__iter__()

while True:
    try:
        print(diedai_l.__next__())
    except StopIteration:
        print('迭代完毕了,循环终止')
        break
运行结果:
1
2
3
4
5
迭代完毕了,循环终止

 3.next()内置函数    next()内置函数实际上就是在调用 l_iter.__next__()

l = [1,2,3,4,5]
l_iter = l.__iter__()
print(next(l_iter))
print(next(l_iter))
print(l_iter.__next__())
运行结果:

1
2
3

原文地址:https://www.cnblogs.com/jgua/p/13513587.html