繁体   English   中英

创建一个 function 以循环遍历带有日期的元组列表

[英]Creating a function to loop over a list of Tuples with dates

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

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

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

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

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) 的 output 但如果我想提供 [(2020,5,20)] 之类的输入,那么它只是循环一年而不是两年。

你可以试试

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)]
所以 output 是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM