我有一个整数列表[1, 2...40, 41...]
,代表几年的几个月。即1
是第1年的1月,13
是第2年的1月,依此类推。当尝试转换为月整数(所有Januarys到1
等)时,我使用month_int % 12
但它将12月变为0
。我写了下面的小块来抓住Decembers,但是想知道是否有更有效的方式?
for month_int in month_list:
if not(bool(month_int % 12)):
# Dec exception here
else:
# work as normal
基本上,我想更改这样的列表:
[1, 2...12, 13, 14, 15...]
[1, 2...12, 1, 2, 3...]
答案 0 :(得分:3)
您的索引是1而不是零。您可以做的是减1,然后再将1加1:
month = (month - 1) % 12 + 1
答案 1 :(得分:1)
fodma1答案已经涵盖了你,但你可以做得更短:
month = month % 12 or 12
>>> l = [1, 2, 12, 13, 14, 15]
>>> [m % 12 or 12 for m in l]
[1, 2, 12, 1, 2, 3]
答案 2 :(得分:0)
由于有更多的月份不是12月,因此首先获得该条件会稍微有点效率。
for month_int in month_list:
if (bool(month_int % 12)):
# normal
else:
# December
因为它只会每12次迭代移动到其他地方。