Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Itertools组合/排列大小_Python_Itertools - Fatal编程技术网

Python Itertools组合/排列大小

Python Itertools组合/排列大小,python,itertools,Python,Itertools,是否真的可以看到itertools.composition或其他对象的len(),而不将其具体化为列表? 我可以用阶乘得到梳子或排列的基数,。。。但我想要一些概括的东西 谢谢无需创建列表。您可以在不存储整个集合的情况下计算iterable中的项目数: sum(1 for _ in myIterable) 对 摘自:对于任何iterableit,您可以执行以下操作: length = sum(1 for ignore in it) 这不会创建列表,因此内存占用很小。但对于许多类型的iterab

是否真的可以看到itertools.composition或其他对象的len(),而不将其具体化为列表?
我可以用阶乘得到梳子或排列的基数,。。。但我想要一些概括的东西


谢谢

无需创建列表。您可以在不存储整个集合的情况下计算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)