Erlo

python学习-38迭代器和生成器

2019-07-16 12:02:52 发布   353 浏览  
页面报错/反馈
收藏 点赞

迭代器和生成器

- 迭代器协议和for循环工作机制

1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往后走,不能往前走)
2.可迭代对象:实现了迭代器的对象(如何实现:对象内部定义一个_iter_()方法)
3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如:for循环,sum,min,max函数等)使用迭代器协议访问对象。
dic ={'a':1,'b':2}
iter_d=dic.__iter__()              # 相当于for循环的迭代。 列表,字典,文件等有_iter_()方法的都可以
print(iter_d.__next__())
    

for循环的本质:循环所有对象,全部都是使用的迭代协议

-for循环机制也可以用while表示

a=[1,2,3,4,5]
iter_a=a.__iter__()
while True:
    try:
        print(iter_a.__next__())
    except StopAsyncIteration:
         print('迭代完毕,循环终止')
         break

-迭代器原理

1.

a = [1,2,3,4,5]
iter_a=a.__iter__()          # 切换为迭代器形式

print(iter_a.__next__())
print(iter_a.__next__())
print(iter_a.__next__())
print(iter_a.__next__())
print(iter_a.__next__())

运行结果:

1
2
3
4
5

Process finished with exit code 0

2.用next方法

a = [1,2,3,4,5]
iter_a=a.__iter__()          # 切换为迭代器形式

print(next(iter_a))
print(next(iter_a))
print(next(iter_a))
print(next(iter_a))
print(next(iter_a))

 

运行结果是一样的

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认