给定A中的a,b中的b和C中的c(其中a,b,c是列表A,B,C的元素),如何返回[a,b,c]的所有可能组合?

时间:2017-02-26 14:31:52

标签: python python-3.x statistics combinatorics

我有3个名单。

A = [1,4,7]
B = [2,5,8]
C = [3,6,9]

如果我从A(比如4)和B的元素(比如-8)中选择一个元素,我有三个C元素可供选择。因此,对于B中的A和b中的每个a,C中有三个c;另外,对于A中的每个a,B中有三个b,每个都有一个C in C.使用这个逻辑,我尝试了下面的代码:

def opt(A,B,C):
    for a in A:
        for b in B:
            for c in C:
                return [a,b,c]

try1 = opt(A,B,C)
print(try1)

产生与<:p>相同的输出

def opta(A,B,C):
    for adex in range(len(A)):
        for bdex in range(len(B)):
            for cdex in range(len(C)):
                return [A[adex], B[bdex], C[cdex]]

try2 = opta(A,B,C)
print(try2)

运行此代码会生成[a,b,c]的单个列表,而不是[a,b,c]列表的所有27种可能组合。我不明白为什么。在上面的任一代码中更改return语句的缩进只会更改将哪个a,b,c放入输出列表中。

现在假设对于[a,b,c]的每个组合,有一个等于a和b和c的乘积的数字。

prodlist = []
for index in range(27):
    prod = a * b * c for a,b,c in [a,b,c]
    prodlist.append(prod)

我该怎么做呢?

0 个答案:

没有答案