python - 在 Python 中获取迭代器中的元素数量

标签 python iterator

有没有一种有效的方法可以知道 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/

相关文章:

python - 断言 os.path.isfile 仅适用于完整路径

python - 与某些扩展名不匹配的正则表达式模式?

java - 是否建议使用带有 ResultSet 作为事件源的观察者模式?

c++ - 友元迭代器可以访问非静态数据成员吗?

python - ndimage.find_object ...颜色特征之后如何?

list - Python:在另一个列表的成员中查找一个列表(按顺序)

python - 我在 x86-64 PC 上运行 32 位 Windows。我应该下载 32 位还是 64 位 Python 安装程序?

python - 使用循环从列表中查找所有唯一的单词

c++ - 在 C++ 中优化 if-else 分支的一个小循环

javascript - 将动态值插入对象数组,javascript