如何将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) 

有关解释,请参阅reduceoperator.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