python – 如何检查迭代器是否实际上是迭代器容器?
发布时间:2020-12-16 23:22:17 所属栏目:Python 来源:网络整理
导读:我有一个下面的迭代器容器的虚拟示例(真正的读取文件太大而不适合内存): class DummyIterator: def __init__(self,max_value): self.max_value = max_value def __iter__(self): for i in range(self.max_value): yield idef regular_dummy_iterator(max_va
我有一个下面的迭代器容器的虚拟示例(真正的读取文件太大而不适合内存):
class DummyIterator: def __init__(self,max_value): self.max_value = max_value def __iter__(self): for i in range(self.max_value): yield i def regular_dummy_iterator(max_value): for i in range(max_value): yield i 这允许我多次迭代该值,以便我可以实现这样的事情: def normalise(data): total = sum(i for i in data) for val in data: yield val / total # this works when I call next() normalise(DummyIterator(100)) # this doesn't work when I call next() normalise(regular_dummy_iterator(100)) 如何检查normalize函数,我正在传递一个迭代器容器而不是一个普通的生成器? 解决方法
首先:没有迭代器容器这样的东西.你有一个可迭代的.
迭代生成迭代器.任何迭代器也是可迭代的,但它自己生成迭代器: >>> list_iter = iter([]) >>> iter(list_iter) is list_iter True 如果iter(ob)是ob test,则没有迭代器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容