python – Itertools组合/排列大小

参见英文答案 > 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)

这不会创建列表,因此内存占用量很小.但是对于许多类型的迭代,它也会消耗它(例如,如果它是一个生成器,它被消耗并且不能重新启动;如果它是一个列表,它就不会被消耗掉).通常没有“非破坏性”方式来确定任意可迭代的长度.

另请注意,如果上面的代码提供无限的对象序列,则它将“永远”运行.

上一篇:从列表中删除类似项目的pythonic方法


下一篇:python – 为什么来自`from itertools import chain`工作但不是`import itertools.chain as chain`?