我想将列表中每个元素组合相乘,并将其存储在同一个列表中,例如:
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]
我该如何完成这项工作?
答案 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])