Создание функции для l oop над списком кортежей с датами - PullRequest
0 голосов
/ 29 мая 2020

Привет, ребята, мне нужна была помощь. У меня есть список кортежей, в котором каждый кортеж содержит 3 элемента.

  1. Год в формате 2020.
  2. Месяц в виде целого числа от 1 до 12
  3. Любое случайное целое число

Я хотел создать функцию l oop для этого списка кортежей, чтобы в каждом кортеже я мог вычислить разницу между месяцем и данным целым числом, а затем узнать новый месяц в соответствии с остатком. Например, кортеж для мая 2020 года будет (2020,5,3), поэтому результат будет 5-3=2, что будет означать февраль 2020 года. Также, если результат будет отрицательным, год будет уменьшаться с 2020 до 2019 и так далее в зависимости от разницы. . Любая помощь будет принята с благодарностью.

Edit - Итак, я создал эту функцию, используя logi c, указанный в одном из ответов ниже, но это не совсем то, что я хотел,

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)], то это просто цикл для один год, а не 2 года.

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете попробовать

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)]
...