Python的迭代器

什么是迭代器

Python的迭代器在for内部通过循环实现。Python的迭代器对象必须实现__iter__()__next__()方法。 如果我们可以通过迭代器获取一个对象,那么这个对象称为“可迭代的”。很多内置的容器,比如listtuplestring等,都是可迭代的。

通过迭代器进行迭代

我们可以使用next()函数对一个迭代器中所有的元素进行迭代,当我们到达容器尾部或者没有元素可以迭代时,系统抛出StopIteration

# 定义list
mylist=[1,2,3,4]# 通过iter获取一个迭代器
my_iter=iter(mylist)# 通过next()方法获取元素
print(next(my_iter))
print(next(my_iter))# 通过内置的__next__()方法迭代
print(my_iter.__next__())
print(my_iter.__next__())# 如果不注释,抛出异常,没有元素可以迭代了
# next(my_iter)

或者通过for循环实现:

my_list=[1,2,3,4,5]
for elem in my_list:print(elem)           

for循环真正的工作方式

iter_obj=iter(iterable)
while True:try:# 获取下一个元素element=next(iter_obj)# 对元素采取一些操作except StopIteraiton:、# 抛出StopIteration异常,并终止循环break

通过无限循环,并通过调用next()获取元素

建立自己的迭代器

我们只需要实现__iter__()__next__()方法即可。前者返回迭代器对象本身,如果需要的话,可以执行初始化操作;或者必须返回序列中的下一个元素,如果到达容器尾部,必须抛出StopIteration异常!

  1 class PowTwo:2     """定义迭代对象"""3     def __init__(self,maxn=0):4         self._max=maxn5 6     def __iter__(self):7         self._n=08         return self9 10     def __next__(self):11         if self._n<=self._max:12             result=2**self._n13             self._n+=114             return result15         else:16             raise StopIteration17 18 my_list=PowTwo(4)19 i=iter(my_list)20 21 # 通过next()方法迭代22 print(next(i))23 24 # 通过for循环进行迭代,elem是__next__()返回的result 25 for elem in my_list:26     print(elem)

最后声明一点,自己定义迭代器时,要添加终止条件,否则会出现无限迭代的情况!!!

Python的迭代器相关推荐

  1. python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  2. 做一个python的旅游系统_有了它,妈妈再也不担心我感冒了,Python使用迭代器进行天气预报...

    上一篇博文我们使用Python制作了一个简单的天气预报小程序(天气渐冷,Python小工具让你随时掌握气温变化,做温暖的穿衣达人).今天,需求有变,如果我们想去旅游,备选方案有北京.上海.广州.新疆等 ...

  3. python中迭代器的实现原理_Python 进阶应用教程

    Python 中的迭代器实现原理 在数学中,集合表示由一个或多个确定的元素所构成的整体.在 Python 中,列表.元组.集合可以用于表示数学中的集合. 例如,分别使用列表.元组.集合表示了一个包含 ...

  4. Python之迭代器

    迭代器( iterator) --是访问集合元素的一种方式,迭代器从集合的第一个元素开始访问,直到所有元素被访问结束.并且,迭代器只能向前访问. 优点:不要求事先准备好整个迭代过程中的所有元素,迭代器 ...

  5. python迭代器好处_关于Python中迭代器的作用

    迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...

  6. python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?

    Python编程语言已经扩展了创新的每一个方面,包括机器学习.数据科学.人工智能等,这些概念是Python作为编程语言取得成功的基石.在本文中,我们将通过以下概念来理解Pytho Python编程语言 ...

  7. Python的迭代器和生成器

    Python的迭代器和生成器 一.迭代器Iterators 迭代器仅是一容器对象,它实现了迭代器协议.它有两个基本方法: 1)next方法 返回容器的下一个元素 2)__iter__方法 返回迭代器自 ...

  8. python手写一个迭代器_搞清楚 Python 的迭代器、可迭代对象、生成器

    很多伙伴对 Python 的迭代器.可迭代对象.生成器这几个概念有点搞不清楚,我来说说我的理解,希望对需要的朋友有所帮助. 1 迭代器协议 迭代器协议是核心,搞懂了这个,上面的几个概念也就很好理解了. ...

  9. [Python] 生成迭代器 iter() 函数

    Python 生成迭代器 iter() 函数 功能: 函数用来生成迭代器. 语法: iter(object[, sentinel]) object – 支持迭代的集合,对象,比如list,元组等. s ...

最新文章

  1. python用什么数据库最容易_python3用什么数据库好
  2. R语言与数据分析(9)R与Excel
  3. 太阳花图片_6种漂亮的花,种子已经成熟,别忘采摘种子,来年再播种
  4. Catch a cold, will be back later
  5. 软件体系架构——质量属性
  6. PyTorch基础-使用卷积神经网络CNN实现手写数据集识别-07
  7. 我所碰到的智能手机自动重启的情况
  8. Android 使用URLConnection下载音频文件
  9. 软件测试 给视频添加字幕功能,巧用百度OCR文字识别技术,实现视频字幕识别...
  10. Redis(十九)-Redis的数据库与键空间
  11. 计算机启动显示不正确的分区表,电脑开机黑屏提示无效的分区表如何解决_电脑开不了机显示无效的分区表如何处理...
  12. 程序员需要掌握的单词
  13. ArcGIS中WGS84转为西安80(无自带转换参数的坐标系转换)
  14. fixedsys字体 win7_fixedsys字体 win7_帮您win7系统记事本像Word文档一样更换字体的解决步骤...
  15. 微信小程序video组件调用腾讯视频的解析
  16. 智能车图像处理逆透视教程
  17. 鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题。
  18. 圭尔夫大学计算机科学硕士,圭尔夫大学到底有多高大上?你可能还不知道
  19. 【历史上的今天】12 月 3 日:世界上第一条短信;Fortran 语言之父诞生;百度贴吧上线
  20. android ui界面

热门文章

  1. grub4dos linux live,grub4dos硬盘引导fedora12 livecd失败
  2. Linux哲学家进餐杀死进程,100分跪求“哲学家就餐问题”在 Linux下运行的源代码(后缀名为.c)!!!...
  3. mysql show status 过滤_在线更改复制过滤选项的方法
  4. 年轻人应该做的和不该做的
  5. A - Cube Stacking(带权并查集)
  6. P4 数据记录增删查改操作
  7. ~~朴素dijkstra算法 (搜索与图论)(附模板题AcWing 849. Dijkstra求最短路 I)
  8. 跨平台最好用笔记软件——Simplenote
  9. Spring使用IOC容器创建对象及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext接口详解
  10. Python3.x连接MySQL数据库,SQL语句使用方法