2017-11-01 8 views
2

파이썬 calendar API를 사용하여 올해의 달을 반복하려고합니다. 현재 달이 1 월 (월 "1")이라고 가정 해 봅시다. 내가 calendar.month_name[1-1] (1 월 이전 달)을 수행하면 결과는 빈 문자열 ""입니다. 월 "0"이 존재하지 않기 때문입니다. 그러나 calendar.month_name[1-2]을 수행하면 결과로 -1 값이 반환되고 December이 반환됩니다.Python calendar.month_name 0- 인덱스를 건너 뛰는 방법

그럼 내 질문은 매개 변수를 가져와 0 월 전에 반환하는 방법입니다. 당신이 볼 수 있어야합니다

답변

1

한 가지 방법은 여기에서 지능형리스트

months = [month for month in calendar.month_name if month] 

을 사용하여 새 변수에 달을 저장하는 것입니다

>>> months[0] 
January 
>>> months[11] 
December 
>>> months[-1] 
December 

편집 1 : 에 대한 답변으로 귀하의 의견을 itertools 라이브러리를 사용할 수 있습니다.

import calendar 
from itertools import cycle 
months = [month for month in calendar.month_name if month] 

pool = cycle(months[::-1]) # creating a cyclic pool of the reverse list 

for month in pool: 
    print(month) 

출력 :

December 
November 
October 
September 
August 
July 
June 
May 
April 
March 
February 
January 
December 
November 
October 
September 
August 
July 
June 
May 
April 
March 
February 
January 
June 
May 
April 
December 
November 
October 
September 
August 
July 
June 
May 
April 
... 

편집 2 :

이보다 더 쉬운 방법 등

import calendar 
months = [month for month in calendar.month_name if month] 

old_index = -4003 

new_index = old_index % len(months) 

print(new_index, months[new_index]) 

출력과 같은 색인을 다시 계산 될 수있다 :

5 June 
,536,
+0

굉장합니다, 고마워요! 한 가지 질문 - 24 개월 전으로 돌아가고 싶다면 어떻게 작동시킬 수 있습니까? 이 방법은 최대 12 개월 동안 작동하지만,'-13'을 사용하면'IndexError'가됩니다. – Hybrid

+0

업데이트를 보았습니다 ... 당신에게 더 많은 upvotes를 줄 수 있기를 바랍니다. 너는 최고야, 고마워! – Hybrid