Python3之手动创建迭代器的实例代码
作者:若数 发布时间:2021-10-15 21:00:30
标签:Python,迭代器
迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。迭代过程从第一个元素至最后一个元素,且过程不能回滚或反方向迭代。
两个基本方法iter、next
序列对象可以利用 iter() 直接创建迭代器,并通过 next() 即可迭代迭代器。
利用for循环迭代
S = 'PYTHON'
IT = iter(S)
for it in IT:
print(it)
示例结果:
P
Y
T
H
O
N
利用next()迭代
S = 'PYTHON'
IT = iter(S)
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))
示例结果:
P
Y
T
H
O
N
当我们使用next()迭代时,如果迭代了次数超过了迭代器中的元素个数就会引发 StopIteration ,由此我们可以利用 while 循环迭代,并不断捕捉迭代结束的异常完成for循环的迭代过程。
S = 'PYTHON'
IT = iter(S)
while True:
try:
print(next(IT))
except StopIteration:
break
P
Y
T
H
O
N
手动构建迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 iter () 与 next () 。 iter () 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next () 方法并通过 StopIteration 异常标识迭代的完成。 next () 方法(Python 2 里是 next())会返回下一个迭代器对象。下面这个类构造了一个迭代器接受一个可迭代的数字,每次迭代都返回上一次迭代结果的平方,当迭代结果大于 9999999999999 时抛出异常。利用该类创建示例对数字2进行平方和迭代。
class IT_SQUARE:
def __init__(self, x):
self.x = x
def __next__(self):
self.x = self.x ** 2
if self.x > 9999999999999:
raise StopIteration
else:
return self.x
def __iter__(self):
return self
IT1 = IT_SQUARE(2)
while True:
try:
print(IT1.__next__())
except StopIteration:
break
示例结果
4
16
256
65536
4294967296
总结
以上所述是小编给大家介绍的Python3之手动创建迭代器的实例代码,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://juejin.im/post/5ce4073ae51d4510835e0204


猜你喜欢
- 本文实例为大家分享了HTML5 Canvas实现的一个画板代码,供大家参考,具体内容如下<!DOCTYPE html><h
- 1、首先在本机安装ssh在cmd输入ssh,出现下面信息代表安装成功2、vscode安装 Remote - SSH 插件3、连接远程主机vs
- 1. 在apps包下新建一个utils的python包2. utils包中新建一个YunPian.py文件,文件中代码如下import re
- 本文详细列出了HTML中使用到的各种鼠标事件,如onclick,onmouseover等;页面相关事件如:onerror,onload等;h
- 首先需要注意的是,本文即将提到的 Druid,并非阿里巴巴的 Druid 数据库连接池,而是另一个大数据场景下的解决方案:Apache Dr
- 如何把imagenet预训练的模型,输入层的通道数随心所欲的修改,从而来适应自己的任务#增加一个通道w = layers[0].weight
- 目录1.celery异步消息队列介绍celery应用举例Celery有以下优点Celery 特性2.工作原理 *****Celery 扮演生
- 大凡人世间的痛苦,多是因放不下有时候我常想,痛苦,该是时光刮给生命的一场飓风吧生活,本就是以这样一种特别的方式,掀起遮盖的一切,让你看到人生
- 遍历数据有以下三种方法:简单对上面三种方法进行说明:iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Se
- 1.数据采集和标记先采集数据,再对数据进行标记。其中采集数据要就有代表性,以确保最终训练出来模型的准确性。2.特征选择选择特征的直观方法:直
- 多数情况下,mysql在刚刚安装时是不支持中文的,这是由于编码的问题我们可以通过修改配置文件,永久实现mysql对中文的识别首先我们要先将文
- 前序在Python中,集合(Set) 是一个无序、不重复的序列,它不支持索引。集合一般用于元素去重或者一些数学中的操作像union,inte
- 本文实例讲述了Python面向对象程序设计之继承与多继承。分享给大家供大家参考,具体如下:1. 继承在C++和Java中,使用继承时,子类的
- 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。这样每次调用的时候
- 本文实例讲述了python监控网站运行异常并发送邮件的方法。分享给大家供大家参考。具体如下:这是一个简单的python开发的监控程序,当指定
- 本文实例讲述了Django框架登录加上验证码校验实现验证功能。分享给大家供大家参考,具体如下:验证码生成函数pip install Pill
- 我们在Python中经常使用会用到matplotlib画图,有些曲线和点的形状、颜色信息长时间不用就忘了,整理一下便于查找。安装matplo
- 本文实例讲述了Python分支语句与循环语句应用。分享给大家供大家参考,具体如下:一、分支语句1、if else语句语法:if 条件判断:
- 从这一章开始进入正式的算法学习。首先我们学习经典而有效的分类算法:决策树分类算法。1、决策树算法决策树用树形结构对样本的属性进行分类,是最直
- 前言我们将利用 Beautiful Soup 模块的搜索功能,根据标签名称、标签属性、文档文本和正则表达式来搜索。搜索方法Beautiful