每个组合列表的一个元素之间的组合

时间:2016-12-10 13:50:07

标签: python

我有大约12个带有任意元素的列表[a, b, c, ... , z],我通过itertools.combinations(iterable, n)获得了一系列组合,从而产生了与每个原始列表匹配的组合列表。

现在很重要的是获得一个包含所有可能组合的列表,选择每个组合列表中的一个元素(组合)。

一个简化的例子是:

A = [a,b,c]
B = [d,e,f]
C = [g,h,i]

my_iterable = [A, B, C]

输出应为:

>>> foo(my_iterable)
(a,d,g), (a,d,h), (a,d,i), (a,e,g), (a,e,h), ... , (c,f,i)

输入可迭代,例如'A,B& C'可以具有可变长度,foo()可以是生成函数。

1 个答案:

答案 0 :(得分:0)

A = ['a','b','c']
B = ['d','e','f']
C = ['g','h','i']

l = [(a, b, c) for a in A for b in B for c in C]
print(l)

出:

[('a', 'd', 'g'), ('a', 'd', 'h'), ('a', 'd', 'i'), ('a', 'e', 'g'), ('a', 'e', 'h'), ('a', 'e', 'i'), ('a', 'f', 'g'), ('a', 'f', 'h'), ('a', 'f', 'i'), ('b', 'd', 'g'), ('b', 'd', 'h'), ('b', 'd', 'i'), ('b', 'e', 'g'), ('b', 'e', 'h'), ('b', 'e', 'i'), ('b', 'f', 'g'), ('b', 'f', 'h'), ('b', 'f', 'i'), ('c', 'd', 'g'), ('c', 'd', 'h'), ('c', 'd', 'i'), ('c', 'e', 'g'), ('c', 'e', 'h'), ('c', 'e', 'i'), ('c', 'f', 'g'), ('c', 'f', 'h'), ('c', 'f', 'i')]