【发布时间】:2017-09-10 02:01:36
【问题描述】:
给定一个迭代器it,我想要一个函数it_count,它返回迭代器产生的元素的计数,而不破坏迭代器。例如:
ita = iter([1, 2, 3])
print(it_count(ita))
print(it_count(ita))
应该打印
3
3
有人指出,对于 all 迭代器来说,这可能不是一个定义明确的问题,所以我不是在寻找一个完全通用的解决方案,但它应该按照给定示例的预期功能.
好的,让我进一步澄清一下我的具体情况。给定以下代码:
ita = iter([1, 2, 3])
itb, itc = itertools.tee(ita)
print(sum(1 for _ in itb))
print(sum(1 for _ in itc))
...我们可以编写上面描述的it_count 函数,让它以这种方式运行吗?即使问题的答案是“那做不到”,这仍然是一个完全有效的答案。这不会使问题变得糟糕。而证明这是不可能的将远非微不足道......
【问题讨论】:
-
到目前为止您尝试过什么?什么让你绊倒了?
-
而不是提供 abstract 示例(这显然会导致人们告诉您对于 general 情况不能这样做),您可以请描述您实际处理的是哪种特定类型的迭代器,以及为什么需要这样做?
-
请不要改变问题的初衷,如果您有“后续”问题,请发布一个新问题。
-
不是对原问题的跟进或修改。这是对不了解其意图的人的澄清。
-
迭代器的主要观点是它是惰性执行的,您可以根据需要从中获取元素,并且不一定具有明确定义的长度(所以问题不是不明确的,您要求的功能定义不明确)如果您真的是从列表文字构造迭代器,您只会得到列表的
len,那么您到底想知道什么迭代器?
标签: python