我们怎样才能取出元素的乘积呢?
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]
这应该有效。
我有一个名为 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]
这应该有效。