python 将列表中除第 i 个元素外的所有元素与 return 列表相乘

python multiply all elements except ith element in list and return list

假设我有一个 list 。我想将它的所有元素相乘,除了第 i 个元素。

示例:

在这里,输出

 24 is 2*3*4
 12 is 1*3*4
 8 is 1*2*4
 6 is 1*2*3

如有任何帮助,我们将不胜感激

使用 itertools.combinations 的解决方案(并反转以获得正确的顺序)

from itertools import combinations
from operator import mul
from functools import reduce

values = [1, 2, 3, 4]
result = [reduce(mul, c) for c in combinations(reversed(values), r=len(values) - 1)]
print(result)  # [6, 8, 12, 24]

或者直接使用您的逻辑:迭代并且对于每个索引不使用相应的值

values = [1, 2, 3, 4]
result = []
for i in range(len(values)):
    x = 1
    for idx, value in enumerate(values):
        if i != idx:
            x *= value
    result.append(x)

print(result)  # [24, 12, 8, 6]

使用两个 for 循环的简单解决方案:

l=[1,2,3,4]
out=[]
for i in range(len(l)):
    prod=1 
    for j in range(len(l)):
        if(j!=i): #Iterate through list once more and compare the indices
            prod=prod*l[j]
    out.append(prod) 
print(out)

输出为:[24, 12, 8, 6]