Python的迭代器
Python的迭代器
什么是迭代器
Python的迭代器在for内部通过循环实现。Python的迭代器对象必须实现__iter__()
和__next__()
方法。 如果我们可以通过迭代器获取一个对象,那么这个对象称为“可迭代的”。很多内置的容器,比如list
、tuple
、string
等,都是可迭代的。
通过迭代器进行迭代
我们可以使用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的迭代器相关推荐
- python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...
[摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...
- 做一个python的旅游系统_有了它,妈妈再也不担心我感冒了,Python使用迭代器进行天气预报...
上一篇博文我们使用Python制作了一个简单的天气预报小程序(天气渐冷,Python小工具让你随时掌握气温变化,做温暖的穿衣达人).今天,需求有变,如果我们想去旅游,备选方案有北京.上海.广州.新疆等 ...
- python中迭代器的实现原理_Python 进阶应用教程
Python 中的迭代器实现原理 在数学中,集合表示由一个或多个确定的元素所构成的整体.在 Python 中,列表.元组.集合可以用于表示数学中的集合. 例如,分别使用列表.元组.集合表示了一个包含 ...
- Python之迭代器
迭代器( iterator) --是访问集合元素的一种方式,迭代器从集合的第一个元素开始访问,直到所有元素被访问结束.并且,迭代器只能向前访问. 优点:不要求事先准备好整个迭代过程中的所有元素,迭代器 ...
- python迭代器好处_关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?
Python编程语言已经扩展了创新的每一个方面,包括机器学习.数据科学.人工智能等,这些概念是Python作为编程语言取得成功的基石.在本文中,我们将通过以下概念来理解Pytho Python编程语言 ...
- Python的迭代器和生成器
Python的迭代器和生成器 一.迭代器Iterators 迭代器仅是一容器对象,它实现了迭代器协议.它有两个基本方法: 1)next方法 返回容器的下一个元素 2)__iter__方法 返回迭代器自 ...
- python手写一个迭代器_搞清楚 Python 的迭代器、可迭代对象、生成器
很多伙伴对 Python 的迭代器.可迭代对象.生成器这几个概念有点搞不清楚,我来说说我的理解,希望对需要的朋友有所帮助. 1 迭代器协议 迭代器协议是核心,搞懂了这个,上面的几个概念也就很好理解了. ...
- [Python] 生成迭代器 iter() 函数
Python 生成迭代器 iter() 函数 功能: 函数用来生成迭代器. 语法: iter(object[, sentinel]) object – 支持迭代的集合,对象,比如list,元组等. s ...
最新文章
- python用什么数据库最容易_python3用什么数据库好
- R语言与数据分析(9)R与Excel
- 太阳花图片_6种漂亮的花,种子已经成熟,别忘采摘种子,来年再播种
- Catch a cold, will be back later
- 软件体系架构——质量属性
- PyTorch基础-使用卷积神经网络CNN实现手写数据集识别-07
- 我所碰到的智能手机自动重启的情况
- Android 使用URLConnection下载音频文件
- 软件测试 给视频添加字幕功能,巧用百度OCR文字识别技术,实现视频字幕识别...
- Redis(十九)-Redis的数据库与键空间
- 计算机启动显示不正确的分区表,电脑开机黑屏提示无效的分区表如何解决_电脑开不了机显示无效的分区表如何处理...
- 程序员需要掌握的单词
- ArcGIS中WGS84转为西安80(无自带转换参数的坐标系转换)
- fixedsys字体 win7_fixedsys字体 win7_帮您win7系统记事本像Word文档一样更换字体的解决步骤...
- 微信小程序video组件调用腾讯视频的解析
- 智能车图像处理逆透视教程
- 鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题。
- 圭尔夫大学计算机科学硕士,圭尔夫大学到底有多高大上?你可能还不知道
- 【历史上的今天】12 月 3 日:世界上第一条短信;Fortran 语言之父诞生;百度贴吧上线
- android ui界面
热门文章
- grub4dos linux live,grub4dos硬盘引导fedora12 livecd失败
- Linux哲学家进餐杀死进程,100分跪求“哲学家就餐问题”在 Linux下运行的源代码(后缀名为.c)!!!...
- mysql show status 过滤_在线更改复制过滤选项的方法
- 年轻人应该做的和不该做的
- A - Cube Stacking(带权并查集)
- P4 数据记录增删查改操作
- ~~朴素dijkstra算法 (搜索与图论)(附模板题AcWing 849. Dijkstra求最短路 I)
- 跨平台最好用笔记软件——Simplenote
- Spring使用IOC容器创建对象及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext接口详解
- Python3.x连接MySQL数据库,SQL语句使用方法