Python获得了多年的列表

时间:2016-01-27 16:08:39

标签: python

我需要在python中获得最近5年。我希望能在一次漂亮的整齐线上做到这一点。但我能想到的最好的就是这个。

year = datetime.datetime.today().year
YEARS = [year, year-1, year-2, year-3, year-4, year-5]

有更好的方法吗?

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,并从今年减去数字。