我没有在python中出现过。 我需要用范围限制来定义字段'year'。现在我正在使用此代码,但我认为存在缩短的方法。
YEAR_CHOICE = []
for year in range(2020,1899,-1):
YEAR_CHOICE += [(year, year)]
year = models.PositiveSmallIntegerField('Year', choices=YEAR_CHOICE, default=0)
是否可以通过任何方式在一行中定义2元组?也许我可以用其他方式制作我需要的东西?谢谢!
答案 0 :(得分:8)
您应该使用list comprehension:
YEAR_CHOICE = [(year,year) for year in xrange(2020,1899,-1)]
您还应该使用xrange
而不是range
。 xrange
是首选,因为它逐个返回值而不是创建整个列表。
答案 1 :(得分:3)
zip自己的范围:
YEAR_CHOICE = zip(*[range(2020,1899,-1)]*2)
YEAR_CHOICE = [(year,year) for year in range(2020,1899,-1)]