2017-11-01 12 views
2

したがって、私はPython calendar APIを使用して、月間にループするようにしています。現在の月が1月(月 "1")であるとします。 calendar.month_name[1-1](1月の1月前)の場合、結果は空の文字列""です - 月が "0"ではないようです。しかし、calendar.month_name[1-2]を実行すると、結果の-1値はDecemberに戻ります。Python calendar.month_name 0インデックスをスキップする方法

だから私の質問は、の部分を返すように0month_name[]パラメータをどうやって得るのですか?あなたが見ることができるはず

答えて

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 
+0

素晴らしい、ありがとう!ちょうど1つの質問 - もし私が24ヶ月前に戻ってみたいと思ったら、これを働かせるには?このメソッドは最大12ヶ月間動作しますが、 '-13'を使うと' IndexError'を取得します – Hybrid

+0

あなたのアップデートを見ました...もっとアップノートを与えることができたらいいですか?あなたは最高です、ありがとう! – Hybrid

関連する問題