我们怎样才能取出元素的乘积呢?

How can we take out the product of elements?

我有一个名为 input_list = [1, 2, 3, 4, 5] 的列表,我想取除当前为 运行 的特定索引之外的每个元素的乘积。

例子

input_list1 = [1, 2, 3, 4, 5]

如果我说第一个索引的值为 1 ,在输出列表中,它的乘积将是除第一个索引 (5*4*3*2) 之外的所有元素并将其插入到新列表中,所有元素也是如此.

Expected_Output:

prod = [120, 60, 40, 30, 24]

您可以使用 math.prod 完成任务:

import math

out = [
    math.prod(input_list1[:i] + input_list1[i + 1 :])
    for i in range(len(input_list1))
]
print(out)

打印:

[120, 60, 40, 30, 24]

我们先求出列表中所有数字的乘积。

from functools import reduce
from operator import mul


l = [1, 2, 3, 4, 5]
product = reduce(mul, l, 1)

一旦我们有了它,让我们遍历列表中的所有项目并将产品除以该项目。这将为我们提供除那个之外的所有项目的产品。

ans = [product // num for num in l]

时间复杂度:O(n)

这应该有效:

代码:

import math

input_list1 = [1, 2, 3, 4, 5]

def main(l):
    final = []
    for i in l:
        b = lambda a: int(a) if a == int(a) else a
        final.append(b(math.prod(input_list1) / int(i)))
    return final

prod = main(input_list1)
print(prod)

输出:

[120, 60, 40, 30, 24]

这应该有效。