我需要在python中获得最近5年。我希望能在一次漂亮的整齐线上做到这一点。但我能想到的最好的就是这个。
year = datetime.datetime.today().year
YEARS = [year, year-1, year-2, year-3, year-4, year-5]
有更好的方法吗?
答案 0 :(得分:13)
这可以提供帮助:
>>> range(year, year - 6, -1)
[2016, 2015, 2014, 2013, 2012, 2011]
答案 1 :(得分:4)
列表理解:
year = datetime.datetime.today().year
YEARS = [year - i for i in range(6)]
或(在Python 2中),只需直接使用range()
来生成列表:
year = datetime.datetime.today().year
YEARS = range(year, year - 6, -1)
您也可以在Python 3中使用后者,但是您必须转换为list()
调用的列表:
year = datetime.datetime.today().year
YEARS = list(range(year, year - 6, -1))
此时列表理解可能更具可读性。在所有这些表达式中,您可以内联datetime.datetime.today().year
,但这意味着它将被调用6次(对于列表理解)或两次(对于range()
- 仅接近)。 / p>
答案 2 :(得分:1)
years_back = 5
year = datetime.datetime.today().year
YEARS = [year - i for i in range(years_back+1)]
答案 3 :(得分:1)
有,但它的行数相同。您可以使用列表推导来生成偏移量,这样您就不必手动输入所有偏移量。如果数字改变,特别有用:
year = datetime.datetime.today().year
YEARS = [year - offset for offset in range(6)]
请注意range(6)
,因为如果包含今年(year - 0
),您实际上是要求列出6个项目。
答案 4 :(得分:-1)
您可以使用列表理解。
例如:
years = [datetime.datetime.today().year - index for index in range(6)]
这将循环显示数字0-5,并从今年减去数字。