如何用Python减去列表中的所有项?

时间:2017-09-22 14:51:11

标签: python

我想要做的是按顺序减去该列表中的所有项目:

>>> ListOfNumbers = [1,2,3,4,5,6,7,8,9,10]
>>> 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10  # should be computed
-53

4 个答案:

答案 0 :(得分:8)

您可以使用reduce()功能:

>>> from functools import reduce
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> reduce(lambda x, y: x - y, lst)
-53

或使用operator.sub代替lambda

>>> import operator
>>> reduce(operator.sub, lst)
-53

请注意,在Python 2.x中reduce()是内置的,因此您无需导入它。

答案 1 :(得分:2)

您可以遍历数组并减去:

result = ListOfNumbers[0]
for n in ListOfNumbers[1:]:
    result -= n

或者,正如vaultah所指出的那样:

result = ListOfNumbers[0] - sum(ListOfNumbers[1:])

答案 2 :(得分:2)

使用itertools.accumulateoperator.sub函数:

import itertools, operator

l = [1,2,3,4,5,6,7,8,9,10]
print(list(itertools.accumulate(l, operator.sub))[-1])   # -53

这并不是假装比发布functools.reduce()解决方案更好,而是提供了一个额外的功能 - 每对的中间减法结果(第一项作为起点):

[1, -1, -4, -8, -13, -19, -26, -34, -43, -53]

答案 3 :(得分:0)

另一种方法,假设项目为输入列表。

if len(items) == 0:
    print(0)
elif len(items) == 1:
    print(items[0])
else:
    print(items[0] - sum(items[1:]))