gpt4 book ai didi

python - 元组列表中两个值之间的差异

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:21 25 4
gpt4 key购买 nike

我有一个元组列表,每个元组代表一个日期和当天的关联值。例如

team_effort = [('2012-09-10', 27), ('2012-09-11', 28), 
('2012-09-12', 28), ('2012-09-13', 31), ('2012-09-14', 31)]

我需要计算每一天之间的值(value)差异,并返回一个类似的元组列表,每个元组都有一个日期和值(如果值相同或减少则为 0,如果增加则为差异)

所以在这个例子中我想返回

[('2012-09-10', 0), ('2012-09-11', 1), 
('2012-09-12', 0), ('2012-09-13', 3), ('2012-09-14', 0)]

以下列表理解有效(在 2.4+ 中)

[(data[0], 0) if i == 0
else (data[0], data[1] - team_effort[i-1][1]) if data[1] > team_effort[i-1][1]
else (data[0], 0)
for i, data in enumerate(team_effort)]

但我认为可能有更优雅的解决方案?有什么建议吗?

请注意,我必须以不同的方式对待 effort_data[0],因为它始终为零,如果到达 effort_data[i-1][1] 行,它将查看列表中的最后一项(又名 effort_data [-1][1].

最佳答案

第一次修订是为了使逻辑规范清晰。

increases = []
for i, data in enumerate(effort_data):
if i == 0:
# can't increase with no prior
increases.append((data[0], 0))
continue
prior_effort = effort_data[i-1][1]
if data[1] > prior_effort:
increases.append((data[0], data[1] - prior_effort))
else:
increases.append((data[0], 0))

其实,和别人发的单行本相比,我还是算了吧。简单胜于复杂。可读性很重要。

关于python - 元组列表中两个值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com