python 将列表中除第 i 个元素外的所有元素与 return 列表相乘
python multiply all elements except ith element in list and return list
假设我有一个 list
。我想将它的所有元素相乘,除了第 i 个元素。
示例:
- 输入:[1,2,3,4]
- 输出:[24,12,8,6]
在这里,输出
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]
假设我有一个 list
。我想将它的所有元素相乘,除了第 i 个元素。
示例:
- 输入:[1,2,3,4]
- 输出:[24,12,8,6]
在这里,输出
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]