如何将Python中的所有项目与Python一起使用?
我需要编写一个函数来获取数字列表并将它们相乘 。 例如: [1,2,3,4,5,6]
会给我1*2*3*4*5*6
。 我真的可以使用你的帮助。
如果您使用的是Python 2,请使用reduce
:
>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6]) 720
注意: reduce
是作为内置的从Python 3中删除的
您可以使用:
import operator import functools functools.reduce(operator.mul, [1,2,3,4,5,6], 1)
有关解释,请参阅reduce
和operator.mul
文档。
您需要Python 3+中的import functools
行。
我会使用numpy.prod
来执行任务。 见下文。
import numpy as np mylist = [1, 2, 3, 4, 5, 6] result = np.prod(np.array(mylist))
如果你想避免导入任何东西,并避免更复杂的Python领域,你可以使用一个简单的for循环
product = 1 # Don't use 0 here, otherwise, you'll get zero # because anything times zero will be zero. list = [1, 2, 3] for x in list: product *= x
我个人喜欢这个function,将一个通用列表的所有元素相乘:
def multiply(n): total = 1 for i in range(0, len(n)): total *= n[i] print total
它很紧凑,使用简单的东西(一个variables和一个for循环),并且对我来说感觉很直观(看起来像我会怎么想这个问题,只要拿一个,然后乘以下一个,等等! )
nums = str(tuple([1,2,3])) mul_nums = nums.replace(',','*') print(eval(mul_nums))
今天发现了这个问题,但是我注意到它没有名单里None
的情况。 所以,完整的解决scheme是:
from functools import reduce a = [None, 1, 2, 3, None, 4] print(reduce(lambda x, y: (x if x else 1) * (y if y else 1), a))
在增加的情况下,我们有:
print(reduce(lambda x, y: (x if x else 0) + (y if y else 0), a))
我想以下面的方式:
def product_list(p): total =1 #critical step works for all list for i in p: total=total*i # this will ensure that each elements are multiplied by itself return total print product_list([2,3,4,2]) #should print 48
var=1 def productlist(number): global var var*=number list(map(productlist,[1,2,4])) print(var)
你可以用地图来做到这一点
我的解决scheme是将元素或列表中的元素相乘
a = 140,10 val = 1 for i in a: val *= i print(val)
[OUTPUT] :
1400