我如何立即获得itertools.product()的长度,因为len(list())会花费无限长的时间?

问题描述 投票:0回答:2
from itertools import product

p = np.random.randint(1,2,2)
p = product(p, repeat=50)

我不知道如何立即获得P的长度

python object itertools
2个回答
0
投票

产品迭代器将包含与您传递的所有可迭代项的长度相乘的项目。您正在传递一个迭代,但重复了50次。因此,您必须将p的长度彼此相乘50倍。基本上是len(p)**50


0
投票

这是简单的组合,而不是真正的编程。有a**n种方法可以选择an值中的任何一个(允许重复)。在您的情况下,alen(p)(原始的p,数组)或2(因为您已经生成了具有两个值的数组),并且n是50,所以将获得2**50如果您有很多时间遍历它们,则为product或1125899906842624的结果。

现在,如果您要查找多少distinct值,则答案甚至更容易(尽管如此)。只有一个独特的价值产生过,一个元组有50个。这是因为您要从仅包含值1的数组中获取产品,而别无其他,因为numpy.random.randint(1, 2)仅给您1(上限被排除)。

© www.soinside.com 2019 - 2024. All rights reserved.