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

 更新时间:2019年05月22日 10:03:00   作者:若数  
迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。这篇文章主要介绍了Python3之手动创建迭代器,需要的朋友可以参考下

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

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

相关文章

  • TensorFlow实现打印每一层的输出

    TensorFlow实现打印每一层的输出

    今天小编就为大家分享一篇TensorFlow实现打印每一层的输出,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python+opencv3生成一个自定义纯色图教程

    python+opencv3生成一个自定义纯色图教程

    今天小编就为大家分享一篇python+opencv3生成一个自定义纯色图教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python multiprocessing 进程间通信方式实现

    Python multiprocessing 进程间通信方式实现

    本文主要介绍了Python multiprocessing 进程间通信方式实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Mac中PyCharm配置Anaconda环境的方法

    Mac中PyCharm配置Anaconda环境的方法

    这篇文章主要介绍了Mac中PyCharm配置Anaconda环境的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python实现备份文件实例

    Python实现备份文件实例

    这篇文章主要介绍了Python实现备份文件的方法,可实现针对各类常见扩展名的文件进行备份的功能,需要的朋友可以参考下
    2014-09-09
  • python广度优先搜索得到两点间最短路径

    python广度优先搜索得到两点间最短路径

    这篇文章主要为大家详细介绍了python广度优先搜索得到两点间最短路径,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Pycharm2017版本设置启动时默认自动打开项目的方法

    Pycharm2017版本设置启动时默认自动打开项目的方法

    今天小编就为大家分享一篇Pycharm2017版本设置启动时默认自动打开项目的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python数据结构之树的全面解读

    Python数据结构之树的全面解读

    数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构中常见的树逻辑结构和存储结构进行了汇总,不求严格精准,但求简单易懂
    2021-11-11
  • python使用Matplotlib改变坐标轴的默认位置

    python使用Matplotlib改变坐标轴的默认位置

    这篇文章主要为大家详细介绍了python使用Matplotlib改变坐标轴的默认位置,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Pytest框架之fixture详解(一)

    Pytest框架之fixture详解(一)

    本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论