问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python3自定义迭代器对象如何用next方法依次迭代

发布网友 发布时间:2022-04-30 18:57

我来回答

1个回答

热心网友 时间:2022-04-10 23:14

Python 3.x与Python 2.x之间存在着较多的语法细节差异。今天在看Python核心编程的时候,说到了自定义迭代器对象。于是动手将源码打了一遍,原书代码如下:

class AnyIter(object):
def __init__(self, data, safe=False):
""" The initialization of iterators """
self.safe = safe
self.iter = iter(data)
def __iter__(self):
""" return a iterator """
return self
def next(self, count=1):
""" Return arbitrary numbers of elements """
retval = []
for item in range(count):
try:
retval.append(self.iter.next())
except StopIteration:
if self.safe:
break
else:
raise # reraise the exception again
return retval

if __name__ == '__main__':
a = AnyIter(range(10), True)
b = iter(a)
for item in range(1,5):
print('{}:{}'.format(item, a.next(item)))

我机器上装的是Python 3.3.2,在控制台运行该脚本的时候直接抛出异常TypeError:

说是iter()返回的是一个非迭代器类型的对象。前后对照了一下,并没有发现哪里有错误啊。于是尝试使用Ipython(Python 版本是2.7.5)来运行该代码,得出完美结果。于是考虑是不是版本的问题。求助google,在stackoverflow上找到一个帖子,找到了关键原因:

于是将上述代码中调用next()的地方全部替换为__next__(),最后在控制台运行该代码,正确得到了预期的结果:

查阅Python 3.3.2 附带的用户手册,果然得到如下结果:

问题得到解决:Python核心编程使用的是Python 2.x,版本差异使得该状况得以发生。还是得动手,不然这样的差异无法得知。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
QQ炫舞里的紫钻多少钱一个月?有什么好处? QQ炫舞这个炫光叫什么?是不是绝版了? QQ炫舞这个炫光是哪个道具的 元气众生录中的应龙背景是什么? 元气众生录学徒积分换什么好 学徒积分兑换攻略 元气众生录每周礼包买哪些 周礼包购买推荐 H2SO4试剂的相对分子质量为98,密度1.84g/cm3,质量分数为98%_百度知 ... 条件 硫酸500ml,相对分子质量98,密度1.84g/立方厘米 质量分数98% 问题... 相对分子质量:98 密度:1.84g 立方厘米 质量分数:98% 在网上看到药监局的新闻,朋友说以后买不到美瞳了,真的吗? 惠普m437n设置8位管理员怎么弄 Python3的问题,为什么定义函数已经赋值,却出错没有定义 电脑惠普14怎么样让其他账户成为管理员 请问python3如何自己定义一个模块然后调用 行政村下辖的村民小组就是自然村吗? 相互宝有申诉成功的吗 宋慈杯法治作文 python3 定义一个学校大类,学校里有房屋、树木。假设调用函数时房屋数量为10,树木数为100 法制故事作文1500 关于法治的故事600字 请各举两个关于‘法治’和‘人治’的有关事例!!!各位网友,谢谢啦!!!!! 残疾人家庭和子女有什么补贴 列举在学校学习,生活中遇到的或看到的需要用法治思维处理的事例. 办理残疾证对个人和家庭有什么好处? 我是秦皇岛的,请问煎饼果子的面糊是什么比例怎么做的更好 有关依法治国重要意义的具体事例- 问一问 爷爷奶奶是残疾属于什么家庭 残疾人(残疾军人)子女是什么意思? 残疾人家庭 家里户口本上有一个是残疾人的就能算是残疾人家庭吗 相互宝21号公示多少克号可以拿到钱 众惠相互和相互宝有关系吗? 相互宝抽搐受影响吗 hp笔记本操作系统的启动管理员怎么设置能让他不当第一启动项 pk赛季甘太程还能玩吗? 三国志战略版好贱怎么拆 失信人能考事业编吗 甘太程能玩几个赛季 三国志战略版s5孙太程加点 如果东吴也评选“五虎上将”,哪五位大将榜上有名? 失信人员满五年后对子女报考军校事业单位有影响吗? 甘宁和五子良将齐名,怎么只能在十二虎臣中排第八? 刘光霁黑药医院治疗骨质增生怎么样? 有谁用过刘光霁黑药,我在山东时见过,那时候好像分量多些,这是怎么回事? 刘光霁 黑药 怎么样 你好,你用过刘光霁黑药吗?疗效怎么样?谢谢 征信黑了,被限高,可以考事业编制吗?征信黑了,被限高,可以考事业编制吗?_百度问一问 谁在湘潭光霁医院治好过强直性脊椎炎 三国志战略版吕蒙太史慈陆逊怎么搭配战法? 父亲进了银行黑名单子女可以考事业单位吗?