我需要在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)
使用列表理解:
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 方法)。