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数组的处理代码
Jan 04 Python
python实现堆栈与队列的方法
Jan 15 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python 私有函数的实例详解
Sep 11 Python
解决python3爬虫无法显示中文的问题
Apr 12 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
May 13 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
python接入支付宝的实例操作
Jul 20 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
同时提取多条新闻中的文本一例
2006/10/09 PHP
php无序树实现方法
2015/07/28 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
php给数组赋值的实例方法
2019/09/26 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
大学本科生的个人自我评价
2013/12/09 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
节约用水演讲稿
2014/05/21 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
网聊搭讪开场白
2015/05/28 职场文书
班主任开场白
2015/06/01 职场文书
python如何做代码性能分析
2021/04/26 Python