Python 我怎样才能立即得到这个itertools.product()的长度,因为len(list())需要无限长的时间才能完成这项工作?
我不知道如何立即获得p的长度乘积迭代器将包含与您传入的所有Iterable的长度相乘的项目数。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结果
你通过了一个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)