如何将已知长度添加到迭代器?

问题描述 投票:0回答:1

我做了一个迭代器:

it = iter([1,2,3])

len(it)
失败,因为“‘list_iterator’类型的对象没有 len()”。

我想我可以通过这样做来增加长度

it.__len__ = lambda: 3

但这也会错误“'list_iterator'对象没有属性'length'”

如何设置迭代器对象的长度?

python
1个回答
0
投票

包起来:

it = iter([1,2,3])

class It:
  __len__ = it.__length_hint__
  __iter__ = it.__iter__
  __next__ = it.__next__
it = It()

print(len(it))    # 3
print(next(it))   # 1
print(len(it))    # 2
print(*it)        # 2 3

在线尝试!

© www.soinside.com 2019 - 2024. All rights reserved.