Четырехзначный счетчик Python - PullRequest
7 голосов
/ 10 марта 2011

Как мы используем python для генерации четырехзначного счетчика?

range(0,9999)

будет иметь 1 цифру, 2 цифры и 3 цифры.Нам нужны только 4 цифры.

, т.е. от 0000 до 9999

Конечно, самый простой способ Pythonic.

Ответы [ 5 ]

16 голосов
/ 10 марта 2011

Отформатируйте строку для дополнения нулями. Чтобы получить список от 0 до 9999, дополненный нулями:

["%04d" % x for x in range(10000)]

То же самое работает для 5, 6, 7, 8 нулей и т. Д. Обратите внимание, что это даст вам список строк. Невозможно иметь целочисленную переменную, дополненную нулями, поэтому строка настолько близка, насколько вы можете получить.

Операция того же формата работает и для отдельных целых.

13 голосов
/ 10 марта 2011

Может быть, str.zfill также может помочь вам:

>>> "1".zfill(4)
'0001'
5 голосов
/ 10 марта 2011

Ты не.Вы форматируете до 4 цифр при выводе или обработке.

print '%04d' % val
1 голос
/ 10 марта 2011

, если вы хотите выбрать форматирование строки, как предлагали многие, и вы используете Python не ниже 2.6, позаботьтесь об использовании форматирования строки в его новейшем воплощении.Вместо:

["%04d" % idx for idx in xrange(10000)]

предлагается выбрать:

["{0:0>4}".format(i) for i in xrange(1000)]

Это потому, что этот последний способ используется в Python 3 как идиома по умолчанию для форматированиястрок, и я думаю, что это хорошая идея, чтобы улучшить переносимость вашего кода для будущих версий Python.

Как кто-то сказал в комментариях, в Python 2.7+ нет необходимости указывать позиционный аргумент, так что это также верно:

["{:0>4}".format(i) for i in xrange(1000)]
0 голосов
/ 10 марта 2011

И чтобы действительно пойти за борт,

In [8]: class Int(int):
   ...:     def __repr__(self):
   ...:         return self.__str__().zfill(4)
   ...:     
   ...:     

In [9]: a = Int(5)

In [10]: a
Out[10]: 0005
...