如何相互减去列表中的所有元素?

时间:2018-03-11 15:00:05

标签: python list subtraction

我正在构建一个运行时间计算器,我的一个计算器就是减去时间。

一旦用户输入他们想要减去的所有时间,它将如下所示:

TimesList = [60, 120, 240, 600]

我的问题是如何创建一些语句来减去列表中的所有元素以创建一些最终时间数?我想要一些逻辑来做到这一点:600 - 240 - 120 - 60 = finaltime

另请注意,最新时间会插入到列表的前面,因此减法必须从列表的后面开始,并在前面工作。

3 个答案:

答案 0 :(得分:1)

您可以使用functools.reduce

import functools
TimesList = [60, 120, 240, 600]
final_result = functools.reduce(lambda x, y:x-y, TimesList[::-1])

输出:

180

答案 1 :(得分:0)

您可以使用以下内容:

(sum(TimesList[:-1]) * -1) + TimesList[-1]

答案 2 :(得分:0)

如果您想创建自己的功能,可以试试这个:

TimesList = [60, 120, 240, 600]
def recursive(final_time,value):
    if not final_time:
        return value
    else:
        try:
            value -= final_time[1]

            return recursive(final_time[1:], value)
        except IndexError:
            return value


print(recursive(sorted(TimesList,reverse=True),sorted(TimesList,reverse=True)[0]))

输出:

180