Python Itertools组合/排列大小
是否真的可以看到itertools.composition或其他对象的len(),而不将其具体化为列表?Python Itertools组合/排列大小,python,itertools,Python,Itertools,是否真的可以看到itertools.composition或其他对象的len(),而不将其具体化为列表? 我可以用阶乘得到梳子或排列的基数,。。。但我想要一些概括的东西 谢谢无需创建列表。您可以在不存储整个集合的情况下计算iterable中的项目数: sum(1 for _ in myIterable) 对 摘自:对于任何iterableit,您可以执行以下操作: length = sum(1 for ignore in it) 这不会创建列表,因此内存占用很小。但对于许多类型的iterab
我可以用阶乘得到梳子或排列的基数,。。。但我想要一些概括的东西
谢谢无需创建列表。您可以在不存储整个集合的情况下计算iterable中的项目数:
sum(1 for _ in myIterable)
对
摘自:对于任何iterable
it
,您可以执行以下操作:
length = sum(1 for ignore in it)
这不会创建列表,因此内存占用很小。但对于许多类型的iterables,它也会消耗it
(例如,如果it
是一个生成器,它会被消耗并且无法重新启动;如果it
是一个列表,它不会被消耗)。通常没有“非破坏性”的方法来确定任意iterable的长度
还要注意的是,如果
它提供了一个无限的对象序列,那么上面的代码将“永远”运行。这会修改迭代器,因此再次尝试对其进行迭代不会产生任何效果。为了缓解我在使用itertools时的这种情况,我做了:import itertools
,然后itCopy=itertools.tee(it)
,然后length=sum(1表示itCopy中的忽略)
,然后表示列表中的I(it)…
length = sum(1 for ignore in it)