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 20 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
Python实现自动上京东抢手机
Feb 06 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
详解python爬取弹幕与数据分析
Nov 14 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 Python
python小型的音频操作库mp3Play
Apr 24 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
PHP中if和or运行效率对比
2014/12/12 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
python修改操作系统时间的方法
2015/05/18 Python
python获取地震信息 微信实时推送
2019/06/18 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
九年级政治教学反思
2014/02/06 职场文书
微电影大赛策划方案
2014/06/05 职场文书
电气自动化求职信
2014/06/24 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
步步惊心观后感
2015/06/12 职场文书
老兵退伍感言
2015/08/03 职场文书
导游词之山东八大关
2019/12/18 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python