Existe alguma maneira para definir 2-tuplas em uma linha?

votos
1

Eu não estou expierenced em python. Eu preciso definir o campo 'ano' com restrição de faixa. Agora eu estou usando esse código, mas eu acho que existe maneira encurtar para fazer isso.

YEAR_CHOICE = []
for year in range(2020,1899,-1):
   YEAR_CHOICE += [(year, year)]
year = models.PositiveSmallIntegerField('Year', choices=YEAR_CHOICE, default=0)

É therу quaisquer formas de definir 2-tuplas em uma linha? Pode ser que eu possa fazer campo que eu preciso de outra forma? Obrigado!

Publicado 06/04/2009 em 13:07
fonte usuário
Em outras línguas...                            


2 respostas

votos
8

Você deve olhar para usar uma compreensão de lista :

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

Você também deve uso xrangeem vez de range. xrangeé preferido, uma vez que retorna a um valor por uma vez de criar a lista inteira.

Respondeu 06/04/2009 em 13:11
fonte usuário

votos
3

zip o intervalo com si mesmo:

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

ou o uso compreensão da lista :

YEAR_CHOICE = [(year,year) for year in range(2020,1899,-1)]
Respondeu 06/04/2009 em 13:12
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more