我想在python中以列表的形式获得最近六个月的数字。假设我们在三月,我想获得:
>>> last_six_months
[2, 1, 12, 11, 10]
您最好的选择是只使用月份的模数计算:
[(datetime.today().month - i - 1) % 12 + 1 for i in range(6)]
包括当前月份;如果只需要前5个月的数据,请使用range(1, 6)
。
>>> [(datetime.today().month - i - 1) % 12 + 1 for i in range(6)]
[3, 2, 1, 12, 11, 10]
(month - 1) % 12 + 1
模式确保您总是获得1到12之间的值。
我想出了这样一个列表推导式:
from datetime import datetime, timedelta
last_six_months = [(datetime.today() - timedelta(days=i)).month for i in range(30, 180, 30)]