-3

If I have a month integer like 6, how can I get the names of the previous 12 months? So passing in 6 would give me a list like

['June','May','April','March','February','January','December','November','October','September','August','July']
Jones1220
  • 786
  • 2
  • 11
  • 22
Unknown Coder
  • 6,625
  • 20
  • 79
  • 129

3 Answers3

2
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
wailinux
  • 139
  • 4
1

I know it has been answered but I think there a moret pythonic way using calendar module

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

You can use itertools.cycle, skipping the x previous and returning the 12 next from a reversed months list:

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

Here you have the live example

Netwave
  • 40,134
  • 6
  • 50
  • 93