如何获得列表元素的所有可能组合(具有限制元素组合)和多个组合?

时间:2017-01-11 15:57:02

标签: python combinations multiplying

我想将列表中每个元素组合相乘,并将其存储在同一个列表中,例如:

A=[0,1,3,5,7]

#generate this combination (only A[1]:A[3])
A[5]=A[1]*A[2] # 1x3=3
A[6]=A[1]*A[3] # 1x5=5
A[7]=A[2]*A[3] # 3x15=15

然后我希望输出为

A=[0,1,3,5,7,3,5,15]

我该如何完成这项工作?

2 个答案:

答案 0 :(得分:0)

而不是必须导入itertools.combinations,一些简单的for循环就足够了:

A=[0,1,3,5,7]

start=1
end=3

for ctr_a, a in enumerate(A[start:end+1]):
    for b in A[start+ctr_a+1:end+1]:
        A.append( a * b )

print(A)

给出

[0, 1, 3, 5, 7, 3, 5, 15]

答案 1 :(得分:0)

正如@Patrick建议的那样,您可以先使用itertools.combinations

 comb = list(itertools.combinations(A[1:4], 2))

然后按如下方式扩展您的列表:

A.extend([cc[0] * cc[1] for cc in comb])
相关问题