如何相互减去列表中的所有元素?
How to subtract all elements in list against each other?
我目前正在为 运行 构建一个时间计算器,我的一个计算器用于减去时间。
一旦用户输入了他们想要减去的所有时间,它将如下所示:
TimesList = [60, 120, 240, 600]
我的问题是如何创建一些语句来减去列表中的所有元素以创建一些最终时间数字?我想要一些逻辑来做到这一点:600 - 240 - 120 - 60 = finaltime
还要记住,最新的时间插入到列表的前面,所以减法必须从列表的后面开始,一直到前面。
您可以使用 functools.reduce
:
import functools
TimesList = [60, 120, 240, 600]
final_result = functools.reduce(lambda x, y:x-y, TimesList[::-1])
输出:
180
您可以选择以下内容:
(sum(TimesList[:-1]) * -1) + TimesList[-1]
如果你想创建自己的函数,你可以试试这个:
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
我目前正在为 运行 构建一个时间计算器,我的一个计算器用于减去时间。
一旦用户输入了他们想要减去的所有时间,它将如下所示:
TimesList = [60, 120, 240, 600]
我的问题是如何创建一些语句来减去列表中的所有元素以创建一些最终时间数字?我想要一些逻辑来做到这一点:600 - 240 - 120 - 60 = finaltime
还要记住,最新的时间插入到列表的前面,所以减法必须从列表的后面开始,一直到前面。
您可以使用 functools.reduce
:
import functools
TimesList = [60, 120, 240, 600]
final_result = functools.reduce(lambda x, y:x-y, TimesList[::-1])
输出:
180
您可以选择以下内容:
(sum(TimesList[:-1]) * -1) + TimesList[-1]
如果你想创建自己的函数,你可以试试这个:
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