Python中是否有内置的产品()?
我一直在阅读教程和书籍,但是我没有发现任何内置的产品function,即与sum()相同的types,但是找不到像prod()
。
我可以通过导入mul()
运算符来find列表中项目的唯一方法吗?
恩,那就对了。 Guido 拒绝了内置prod()函数的想法 ,因为他认为这很less需要。
正如你所build议的,使用reduce()和operator.mul()来创build自己的代码并不困难:
def prod(iterable): return reduce(operator.mul, iterable, 1) >>> prod(range(1, 5)) 24
在Python 3中, reduce()函数被移到了functools模块,所以你需要添加:
from functools import reduce
作为一个侧面说明, prod()的主要动机用例是计算阶乘。 我们已经在math模块中支持这个function:
>>> import math >>> math.factorial(10) 3628800
Python中没有product
,但可以将其定义为
def product(iterable): return reduce(operator.mul, iterable, 1)
或者,如果您有NumPy,请使用numpy.product
。
由于在Python 3.0中已经删除了reduce()函数 ,所以你必须采取不同的方法。
你可以使用functools.reduce()
来改变这个变化:
product = functools.reduce(operator.mul, iterable, 1)
或者,如果你想遵循python团队的精神(删除reduce()
是因为他们认为会更具可读性),可以通过循环来实现:
product = 1 for x in iterable: product *= x
from numpy import multiply, product list1 = [2,2,2] list2 = [2,2,2] mult = 3 prod_of_lists = multiply(list1,list2) >>>[4,4,4] prod_of_list_by_mult = multiply(list1,mult) >>>[6,6,6] prod_of_single_array = product(list1) >>>8
numpy有许多非常酷的函数列表!