Python itertools.product 具有任意数量的集合

Posted

技术标签:

【中文标题】Python itertools.product 具有任意数量的集合【英文标题】:Python itertools.product with arbitrary number of sets 【发布时间】:2013-08-20 17:52:34 【问题描述】:

我希望执行以下代码:

temp = []
temp.append([1,2])
temp.append([3,4])
temp.append([5,6])

print list(itertools.product(temp[0],temp[1],temp[2]))

但是,我想对任意长度的 temp 执行它。 IE。更像是:

print list(itertools.product(temp))

如何在不明确知道 temp 中有多少条目的情况下为 itertools.product 正确格式化输入以在第一段代码中产生相同的结果?

【问题讨论】:

【参考方案1】:
print list(itertools.product(*temp))

使用* 将可迭代的参数解包为单独的位置参数。

【讨论】:

抱歉,经过一番搜索后找到了解决方案。而且现在不能删除。对不起! @user2331057 无需删除 - 发布您找到的解决方案作为答案是正确的做法。如果它令人满意地解决了您的问题,现在接受您自己的答案。 @Brionius:我不是 OP。我们的用户名看起来非常相似,但您可以看到我们的代表人数不同,他的名字有蓝色背景。 @user2357112 啊,我的错!【参考方案2】:

或者可以这样做:

使用 zip 组合列表。 结果是一个列表迭代器。

a = ["A", "a"]
b = ["B", "b"]
c = ["C", "c"]

number_iterator = zip(a,b,c)
numbers = list(number_iterator)

print (numbers)

【讨论】:

以上是关于Python itertools.product 具有任意数量的集合的主要内容,如果未能解决你的问题,请参考以下文章

Python itertools.product 具有任意数量的集合

Python itertools.product 具有可变数量的参数

Python itertools.product 重新排序生成

Python小技巧:使用*解包和itertools.product()求笛卡尔积(转)

itertools.product 是不是懒惰地评估它的论点?

python itertools模块实现排列组合