博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习教程(Python学习路线):Python 3—手动创建迭代器
阅读量:7233 次
发布时间:2019-06-29

本文共 1304 字,大约阅读时间需要 4 分钟。

Python学习教程(Python学习路线):Python 3—手动创建迭代器

今天带大家学习Python 3如何手动创建迭代器!

概述

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

两个基本方法iter、next

序列对象可以利用iter()直接创建迭代器,并通过next()即可迭代迭代器。

利用for循环迭代

S = 'PYTHON'IT = iter(S)for it in IT: print(it)复制代码

示例结果:

PYTHON复制代码

利用next()迭代

S = 'PYTHON'IT = iter(S)print(next(IT))print(next(IT))print(next(IT))print(next(IT))print(next(IT))print(next(IT))复制代码

示例结果:

PYTHON复制代码

当我们使用next()迭代时,如果迭代了次数超过了迭代器中的元素个数就会引发StopIteration,由此我们可以利用while循环迭代,并不断捕捉迭代结束的异常完成for循环的迭代过程。

S = 'PYTHON'IT = iter(S)while True: try: print(next(IT)) except StopIteration: breakPYTHON复制代码

手动构建迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 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复制代码

示例结果

416256655364294967296复制代码

更多的Python学习教程Python学习路线接下来继续为大家更新,或者大家有什么想看想学的知识点,也可以留言哦!

转载于:https://juejin.im/post/5cf5dc2f5188257c6b5174d5

你可能感兴趣的文章
CH5102 Mobile Service
查看>>
POJ3635 Full Tank
查看>>
XML的两种读取方法
查看>>
jquery插件制作
查看>>
Python简单试题3
查看>>
Effective C++ 笔记
查看>>
hybris 定义 long String
查看>>
【眼见为实】自己动手实践理解数据库READ UNCOMMITED && SERIALIZABLE
查看>>
高并发和大流量解决方案--数据库缓存
查看>>
C# 中类和结构的区别
查看>>
nginx常用命令
查看>>
ASP.NET 无权访问所请求的资源。请考虑对 ASP.NET 请求标识授予访问此资源的权限。...
查看>>
GridView中字符串太长处理方式
查看>>
侧滑动画
查看>>
20175318 2018-2019-2 实验二《Java面向对象程序设计》实验报告
查看>>
自定义控件的最基本了解和应用
查看>>
题解 CF191C 【Fools and Roads】
查看>>
phpStudy配置多站点多域名步骤,及遇到的403错误解决方式
查看>>
Fiddler (二) Script 用法
查看>>
js学习笔记之自调用函数和原型链
查看>>