Python 我怎样才能立即得到这个itertools.product()的长度,因为len(list())需要无限长的时间才能完成这项工作?

Python 我怎样才能立即得到这个itertools.product()的长度,因为len(list())需要无限长的时间才能完成这项工作?,python,object,itertools,Python,Object,Itertools,我不知道如何立即获得p的长度乘积迭代器将包含与您传入的所有Iterable的长度相乘的项目数。 你通过了一个iterable,但重复了50次。因此,必须将p50倍的长度相乘。这基本上是len(p)**50这是简单的组合数学,不是真正的编程。有a**n方法可以选择a值n的任意一次(允许重复)。在您的例子中,a是len(p)(原始的p,数组),或者2(因为您生成了一个包含两个值的数组),n是50,因此如果您有大量时间对它们进行迭代,那么将从产品中获得2**50或1125899906842624结果

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

乘积迭代器将包含与您传入的所有Iterable的长度相乘的项目数。

你通过了一个iterable,但重复了50次。因此,必须将
p
50倍的长度相乘。这基本上是
len(p)**50

这是简单的组合数学,不是真正的编程。有
a**n
方法可以选择
a
n
的任意一次(允许重复)。在您的例子中,
a
len(p)
(原始的
p
,数组),或者2(因为您生成了一个包含两个值的数组),
n
是50,因此如果您有大量时间对它们进行迭代,那么将从
产品中获得
2**50
或1125899906842624结果


现在,如果你想知道你得到了多少不同的值,答案就更简单了(尽管微妙地如此)。只生成了一个不同的值,一个包含50个值的元组。这是因为您从只包含值
1
的数组中获取产品,而不包含任何其他内容,因为
numpy.random.randint(1,2)
只提供
1
(上限已排除)。

谢谢您的回答,也许我的问题不够清楚,我想知道是否有任何方法可以获得itertool.product的长度,而无需将其转换为列表,无论其中包含什么数字,谢谢。您可以对输入进行计算。如果事先不知道长度,请使用
len(p)**50
。打电话之后,不,我想没有办法知道它会持续多久。也许实现它的代码可以解决这个问题,但它不会在任何地方公开这个问题。这能回答你的问题吗?
from itertools import product

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