2024-04-20 12:52:09 发布
网友
我是在做一个简单的计算器的时候想到这一点的。我做了一个简单的程序来计算下面的数字列表,但是乘法的程序有点长。在
所以有人知道如何在python中对多个数字列表进行短程序吗。这是我的代码。在
def calculate(oper,*nm): return oper(nm) add=lambda x:sum(x) def mult(lst): tmp=1 for i in lst: tmp*=i return tmp
计算(加法,2,34,2)
计算(mult,8,5,7)
您可以使用内置的reduce函数,它接受一个可调用的、一个列表和一个可选的起始元素。它使用元组(elem, result)调用callable,其中element是列表中的ith元素,result是目前为止的结果。在
reduce
(elem, result)
callable
ith
result
reduce(lambda item,prod: item * prod, range(1, 5), 1) Out[2]: 24
所以上面的方法首先用(1,1)调用lambda函数,然后用(2,1*1)调用(3,2*1),最后是{}
(1,1)
(2,1*1)
(3,2*1)
所以您需要定义add和mult,并用内置的reduce替换您的calculate
add
mult
calculate
http://docs.python.org/2.7/library/functions.html?highlight=reduce#reduce
实际上,您不需要定义calculate,因为Python已经有了它的名称:reduce。在
def calculate(oper, *nm): return reduce(oper, nm) In [6]: import operator In [7]: calculate(operator.add, 2, 34, 2) Out[7]: 38 In [8]: calculate(operator.mul, 8, 5, 7) Out[9]: 280
注意:在Python3中,reduce被移到了functools module。(感谢@ErikRoper指出这一点。)
您可以使用内置的
reduce
函数,它接受一个可调用的、一个列表和一个可选的起始元素。它使用元组(elem, result)
调用callable
,其中element是列表中的ith
元素,result
是目前为止的结果。在所以上面的方法首先用}
(1,1)
调用lambda函数,然后用(2,1*1)
调用(3,2*1)
,最后是{所以您需要定义
^{pr2}$add
和mult
,并用内置的reduce替换您的calculate
http://docs.python.org/2.7/library/functions.html?highlight=reduce#reduce
实际上,您不需要定义
calculate
,因为Python已经有了它的名称:reduce。在注意:在Python3中,
reduce
被移到了functools module。(感谢@ErikRoper指出这一点。)相关问题 更多 >
编程相关推荐