Python获得了多年的列表

Mar*_*ark 3 python

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

year = datetime.datetime.today().year
YEARS = [year, year-1, year-2, year-3, year-4, year-5]
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

Jun*_*sor 15

这有助于:

>>> range(year, year - 6, -1)
[2016, 2015, 2014, 2013, 2012, 2011]
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 8

使用列表理解:

year = datetime.datetime.today().year
YEARS = [year - i for i in range(6)]
Run Code Online (Sandbox Code Playgroud)

或(在 Python 2 中),直接使用range()即可生成列表:

year = datetime.datetime.today().year
YEARS = range(year, year - 6, -1)
Run Code Online (Sandbox Code Playgroud)

您也可以在 Python 3 中使用后者,但您必须通过list()调用转换为列表:

year = datetime.datetime.today().year
YEARS = list(range(year, year - 6, -1))
Run Code Online (Sandbox Code Playgroud)

在这一点上,列表理解可能更具可读性。在所有这些表达式中,您可以内联datetime.datetime.today().year,但这确实意味着它将被调用 6 次(对于列表理解)或两次(对于range()-only 方法)。