Si tengo un número entero de un mes como 6, ¿cómo puedo obtener los nombres de los 12 meses anteriores? Entonces pasar en 6 me daría una lista como

['June','May','April','March','February','January','December','November','October','September','August','July']
-4
Unknown Coder 10 sep. 2018 a las 16:47

3 respuestas

La mejor respuesta
m =['January', 'February', 'March', 'April', 'May', 'June', 'July','August', 'September', 'October', 'November', 'December']
pos = 6 # current month is June
for i in range(pos,pos-12,-1):
    print(m[i-1]) # in real m[pos] == July . so m[pos-1] == June
1
wailinux 10 sep. 2018 a las 14:10

Sé que ha sido respondido, pero creo que hay una manera más pitónica utilizando el módulo de calendario.

import calendar

current = 11
last_12_months = [calendar.month_name[1:][i] for i in range(current - 12, current)] # starting from the last
reverse_last_12_months = reversed(last_12_months) # starting from the current
0
Marco Aguiar 20 nov. 2019 a las 16:52

Puede usar itertools.cycle, omitiendo la x anterior y devolviendo la 12 siguiente de una lista de meses invertidos:

import itertools

def get_month_from_int(i):
  reverse_months = itertools.cycle([
  'December','November','October','September','August','July', 'June','May','April', 'March','February','January'
  ])
  for _ in range(i):
    next(reverse_months)
  return [next(reverse_months) for _ in range(12)]

Aquí tiene el ejemplo en vivo

0
Netwave 10 sep. 2018 a las 14:03