【问题标题】:Creating a function to loop over a list of Tuples with dates创建一个函数来遍历带有日期的元组列表
【发布时间】:2020-05-29 19:14:41
【问题描述】:

大家好,我需要一些帮助。我有一个元组列表,其中每个元组包含 3 个元素。

  1. 格式为 2020 年。
  2. 1-12 的整数月份
  3. 任何随机整数值

我想创建一个函数来遍历这个元组列表,以便在每个元组中我可以计算月份和给定整数之间的差,然后根据余数找出新月份。 例如,2020 年 5 月的元组将是 (2020,5,3),那么结果将是 5-3=2,这意味着 2020 年 2 月。此外,如果结果为负,则年份将从 2020 年减少到 2019 年,依此类推.任何帮助将不胜感激。

编辑 - 所以我使用以下答案之一中给出的逻辑创建了这个函数,但这并不是我想要的,

def subtract_months(input_list):

output_list = []

#TODO: implement your code here

for i in input_list:

    result = i[1]-i[2]

    if 12 >= result > 0:
        output_list.append((i[0],result))
    else:
        output_list.append((i[0]-1,12-abs(result)))

return output_list

如果我使用 [(2020,5,3)] 之类的输入,则代码可以正常工作并提供 (2020,2) 的输出,但如果我想提供 [(2020,5,20)] 之类的输入,那么它只是循环一年而不是两年。

【问题讨论】:

  • 发布样本数据和预期输出
  • 发布您尝试完成此任务的任何代码

标签: python python-3.x list loops tuples


【解决方案1】:

你可以试试

ls = [(2020,5,3), (2020,5,14), (2020,6,1), (2020,7,18)]
[(i[0], i[1] - i[2], i[2]) if 12 >= i[1] - i[2] > 0 else (i[0] - 1, i[1], i[2])  for i in ls]

示例中的元组列表为[(2020,5,3), (2020,5,14), (2020,6,1), (2020,7,18)]
所以输出是

[(2020, 2, 3), (2019, 5, 14), (2020, 5, 1), (2019, 7, 18)]

【讨论】:

  • 谢谢,我可以用你的逻辑完成我的解决方案。
猜你喜欢
  • 2020-07-18
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2017-11-20
  • 1970-01-01
相关资源
最近更新 更多