参见英文答案 > Is there any built-in way to get the length of an iterable in python? 10个
> What’s the shortest way to count the number of items in a generator/iterator? 5个
反正有没有看到itertools.Combination或其他对象的len(),实际上没有将它实现到列表中?
我可以用阶乘法得到梳子或排列的基数,但我想要一些概括的东西.
谢谢
解决方法:
对于任何可迭代的,您可以:
length = sum(1 for ignore in it)
这不会创建列表,因此内存占用量很小.但是对于许多类型的迭代,它也会消耗它(例如,如果它是一个生成器,它被消耗并且不能重新启动;如果它是一个列表,它就不会被消耗掉).通常没有“非破坏性”方式来确定任意可迭代的长度.
另请注意,如果上面的代码提供无限的对象序列,则它将“永远”运行.