摘要: 问题: ​ 你想构建一个能支持迭代操作的额自定义对象,并希望找到一个能实现迭代协议的简单方法。 解决方案: ​ 目前为止,在对象上实现迭代最简单的方式是使用一个生成器函数。可以实现一个深度优先遍历树形节点的生成器。下面是实现代码 class Node: def __init__(self, valu 阅读全文
posted @ 2022-03-17 14:15 qiupeng 阅读(33) 评论(0) 推荐(0)
摘要: ​ 问题: ​ 你想实现一个自定义迭代模式,跟普通的内置函数比如range(),reverse的()不一样。 解决方案: ​ 如果你想实现一种新的迭代模式,使用一个生成函数来定义它。下面是 一个生产某个范围内浮点数的生成器。 def frange(start, stop, increment): x 阅读全文
posted @ 2022-03-17 11:36 qiupeng 阅读(35) 评论(0) 推荐(0)
摘要: 问题: ​ 你构建了一个自定义容器对象,里面包含有列表、元组或其他可迭代对象。你想直接在你的这个新容器对象上执行迭代操作。 解决方案: ​ 实际上你只需要定义一个__iter__()方法,将迭代操作代理到容器内部的对象上去,比如: class Node: def __init__(self,valu 阅读全文
posted @ 2022-03-17 11:17 qiupeng 阅读(27) 评论(0) 推荐(0)
摘要: 问题: ​ 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环 解决方案: ​ 为了手动的遍历可迭代对象,使用next()函数并在代码中捕获StopIterable异常。比如,下面的例子手动读取一个文件中的所有行: def manual_iter(): with open(r'D:\stu 阅读全文
posted @ 2022-03-17 11:16 qiupeng 阅读(60) 评论(0) 推荐(0)