前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python迭代对象、迭代器与生成器

Python迭代对象、迭代器与生成器

作者头像
读懂原理
发布2022-07-01 15:02:09
4860
发布2022-07-01 15:02:09
举报
文章被收录于专栏:给点知识

Python迭代对象、迭代器与生成器

#关系图#

#1.可迭代对象(iterable)#

一个具备__iter__()方法的对象,就是一个可迭代对象,但是要成为一个正常的可迭代对象那么就需要遵循协议。这个方法必须返回一个迭代器。

可迭代协议: 含__iter__()方法。且可迭代对象中的__iter__()方法返回的是一个对应的迭代器。(如list对应的迭代器就是list_iterator)

以下代码MyList 实现了__iter__方法,说明这个是一个可迭代对象,而不是一个迭代器。但这个不是一个真正的迭代对象,因为没有返回一个迭代器,也就是没有遵循协议。

#2.迭代器(iterator)#

  1. 迭代是Python最强大的功能之一,是访问集合元素的一种方式。
  2. 迭代器是一个可以记住遍历的位置的对象。
  3. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
  4. 迭代器有两个基本的方法:iter() 和 next()。

5. 字符串,列表或元组对象都可用于创建迭代器:

6. 查看迭代器源码类,可以看到整个类实现了__iter__和__next__两个魔法方法。

#3.生成器(generator)#

生成器是一种特殊的迭代器,不需要手动的编写__iter()__和__next()__方法,因为yeild关键字已经包含了这两种方法。

注意事项:

2.因为生成器(generator)一定是迭代器,所以生成器也是一种懒加载的模式生成值(即需要用的时候才会生成数据,不需要的时候不会生成)

1.生成器有两个实现方法:

a. 生成器表达式:将列表推导式的[]改成()即可得到生成器

b. 生成器函数:调用yield关键字即可。

参考:https://docs.python.org/zh-cn/3/glossary.html#term-generator

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 给点知识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档