如何从此表构建所有可能元组的列表?

Chr*_*s R 3 python algorithm

假设我有一组列定义:

Col1: value11 value12 value13
Col2: value21 value22 
Col3: value31 value32 value33
...
Run Code Online (Sandbox Code Playgroud)

给定列的一些子集 - 2个或更多 - 我想找到这些列的所有可能值.假设我选择上面的第1列和第2列:

(value11 value21)
(value11 value22)
(value12 value21)
(value12 value22)
(value13 value21)
(value13 value22)
Run Code Online (Sandbox Code Playgroud)

如果我选择了2:3:

(value21 value31)
(value21 value32)
(value21 value33)
(value22 value31)
(value22 value32)
(value22 value33)
Run Code Online (Sandbox Code Playgroud)

如果我选择了全部三个:

(value11 value21 value31)
(value11 value21 value32)
...
Run Code Online (Sandbox Code Playgroud)

我在python中实现这个,我想要一个快速的算法来做到这一点.我的输入是一个元组列表:(columnName,columnValueList)

有什么建议?

Jer*_*ell 16

获得这个的最好方法是使用itertools.product().例如:

import itertools

group1 = ['a', 'b']
group2 = ['c', 'd']

print list(itertools.product(group1, group2))

#==> [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
Run Code Online (Sandbox Code Playgroud)

此函数接受多个参数(即多列).

有关iterools.product()的更多帮助,请参阅此内容.