使用itertools生成列表的列表的笛卡儿积(using itertools to generat

2019-10-30 08:53发布

我试图解决中提到的问题这篇文章 。 考虑D=[d1,...,dm]一个非负整数的列表。 我想有集的笛卡尔积的range(d1),...,range(dm) 例如,如果m=3我可以使用itertools:

 indices=[i for i in itertools.product(range(d1),range(d2),range(d3))]

我将不胜感激,如果你能帮助我知道我可以生成indices使用D任意长度。

Answer 1:

您可以使用map绘制的所有项目Drange ,然后解压它们的product

indices=list(itertools.product(*map(range, D)))


Answer 2:

您可以使用*此:

[i for i in itertools.product(*map(range, D))]


文章来源: using itertools to generate the Cartesian product of list of lists