有没有一种有效的方法可以知道 Python 中的迭代器中有多少元素,一般而言,无需遍历每个元素并进行计数?
最佳答案
这段代码应该可以工作:
>>> iter = (i for i in range(50))
>>> sum(1 for _ in iter)
50
虽然它确实遍历每个项目并计算它们,但这是最快的方法。
它也适用于迭代器没有项目时:
>>> sum(1 for _ in range(0))
0
当然,对于无限输入,它会永远运行,所以请记住迭代器可以是无限的:
>>> sum(1 for _ in itertools.count())
[nothing happens, forever]
另外,请注意,迭代器将被耗尽,如果进一步尝试使用它,将会看到没有元素。这是 Python 迭代器设计不可避免的结果。如果要保留元素,则必须将它们存储在列表或其他内容中。
关于python - 在 Python 中获取迭代器中的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345785/