Python3之手动创建迭代器的实例代码


Posted in Python onMay 22, 2019

迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。迭代过程从第一个元素至最后一个元素,且过程不能回滚或反方向迭代。

两个基本方法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之手动创建迭代器的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
Python编程实现正则删除命令功能
Aug 30 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
python两个_多个字典合并相加的实例代码
Dec 26 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
Python爬虫开发与项目实战
Dec 16 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
python3操作redis实现List列表实例
Aug 04 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 Python
PyTorch搭建一维线性回归模型(二)
May 22 #Python
PyTorch基本数据类型(一)
May 22 #Python
PyTorch搭建多项式回归模型(三)
May 22 #Python
pytorch使用Variable实现线性回归
May 21 #Python
Python面向对象进阶学习
May 21 #Python
谈一谈基于python的面向对象编程基础
May 21 #Python
python字符串和常用数据结构知识总结
May 21 #Python
You might like
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
神族 Protoss 历史背景
2020/03/14 星际争霸
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
微信小程序实现发红包功能
2018/07/11 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
使用Python来开发微信功能
2018/06/13 Python
python求质数的3种方法
2018/09/28 Python
django2笔记之路由path语法的实现
2019/07/17 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
智能钱包:Ekster
2019/11/21 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
给客户的道歉信
2014/01/13 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
2014年协会工作总结
2014/11/22 职场文书
生日赠语
2015/06/23 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers