什么是减法函数,类似于sum(),用于减去列表中的项目?

时间:2012-04-01 10:00:45

标签: python function sum subtraction

我正在尝试创建一个计算器,但是我在编写一个从列表中减去数字的函数时遇到了麻烦 例如:

class Calculator(object):
    def __init__(self, args):
        self.args = args

    def subtract_numbers(self, *args):
        return ***here is where I need the subtraction function to be****

另外,我可以简单地使用return sum(args)来计算总数,但我不确定我可以为减法做些什么。

2 个答案:

答案 0 :(得分:12)

from functools import reduce  # omit on Python 2
import operator

a = [1,2,3,4]

xsum = reduce(operator.__add__, a)  # or operator.add
xdif = reduce(operator.__sub__, a)  # or operator.sub

print(xsum, xdif)
## 10 -8

reduce(operator.xxx, list)基本上“插入”列表元素之间的运算符。

答案 1 :(得分:5)

这完全取决于你的意思。您可以简单地从第一个数字中减去其余数字的总和,如下所示:

def diffr(items):
    return items[0] - sum(items[1:])

很难说,因为在减法中它取决于你减去的顺序;但是如果你从左到右减去,就像在标准操作顺序中那样:

  

x0 - x1 - x2 - x3 - ... - xn = x0 - (x1 + x2 + x3 + ... + xn)

与上面定义diffr()的代码段相同。

似乎可能在您的计算器环境中,x0可能是您的运行总计,而args参数可能代表数字x1 xn。在这种情况下,您只需从运行总计中减去sum(args)。也许我在你的代码中读得太多了...我想你明白了,是吗?