我正在尝试创建一个计算器,但是我在编写一个从列表中减去数字的函数时遇到了麻烦 例如:
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)
来计算总数,但我不确定我可以为减法做些什么。
答案 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)
。也许我在你的代码中读得太多了...我想你明白了,是吗?