有没有办法在一行中定义2元组?

时间:2009-04-06 12:07:28

标签: django django-models

我没有在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元组?也许我可以用其他方式制作我需要的东西?谢谢!

2 个答案:

答案 0 :(得分:8)

您应该使用list comprehension

YEAR_CHOICE = [(year,year) for year in xrange(2020,1899,-1)]

您还应该使用xrange而不是rangexrange是首选,因为它逐个返回值而不是创建整个列表。

答案 1 :(得分:3)

zip自己的范围:

YEAR_CHOICE = zip(*[range(2020,1899,-1)]*2)

或使用list comprehension

YEAR_CHOICE = [(year,year) for year in range(2020,1899,-1)]