博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3之手动创建迭代器
阅读量:6714 次
发布时间:2019-06-25

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

概述

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

两个基本方法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:        break复制代码
PYTHON复制代码

手动构建迭代器

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

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

你可能感兴趣的文章
DataTable转换成List
查看>>
身份证号码验证算法
查看>>
py实现ftp
查看>>
3、异步编程-JS种事件队列的优先级
查看>>
关于C语言判断文件尾问题的探讨
查看>>
poj1243(经典dp)
查看>>
svn仓库转为git仓库
查看>>
跳转到指定的控制器
查看>>
cocoapod升级版本
查看>>
在正式800修改代码
查看>>
AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar
查看>>
用前序遍历递归构造二叉树
查看>>
JavaScript jQuery bootstrap css ajax
查看>>
组合选择器
查看>>
Understanding Angular’s $apply() and $digest()
查看>>
HTML之列表
查看>>
Global.asax文件说明
查看>>
(十六)SpringBoot之使用 Caching- - EhCache
查看>>
ubuntu制作apt源
查看>>
理解Java常量池
查看>>