Python:有没有更有效的方法来转换月份的int值?

时间:2017-11-30 13:22:06

标签: python

我有一个整数列表[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...]

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次迭代移动到其他地方。