Python - преобразование списка - PullRequest
24 голосов
/ 13 марта 2009

Кто-нибудь знает, какую магию я должен использовать, чтобы изменить список x:

x = [1,2,3,4,5,11]

в список y?

y = ['01', '02', '03', '04', '05', '11']

Спасибо всем заранее за помощь ...

Ответы [ 7 ]

38 голосов
/ 13 марта 2009

Вы можете использовать понимание списка (Python 2.6 +):

y = ["{0:0>2}".format(v) for v in x]

Или для Python до версии 2.6:

y = ["%02d" % v for v in x]

Редактировать: пропустил тот факт, что вы хотели заполнить нулями ...

17 голосов
/ 13 марта 2009

Вы хотите использовать встроенную функцию map:

>>> x = [1,2,3,4,5]
>>> x
[1, 2, 3, 4, 5]
>>> y = map(str, x)
>>> y
['1', '2', '3', '4', '5']

РЕДАКТИРОВАТЬ Вы изменили требования ко мне! Чтобы отобразить начальные нули, выполните следующие действия:

>>> x = [1,2,3,4,5,11]
>>> y = ["%02d" % v for v in x]
>>> y
['01', '02', '03', '04', '05', '11'] 
6 голосов
/ 13 марта 2009

Я бы сам использовал понимание списка, но вот другое решение, использующее карту для интересующихся ...

map(lambda v: "%02d" %v, x)
1 голос
/ 28 июня 2017

Попробуйте это:

>>> [str(v).rjust(2,'0') for v in x]
['01', '02', '03', '04', '05', '11']

rjust в качестве метода строкового класса, принимает целочисленный аргумент (длина результата) и необязательный символ заполнения

1 голос
/ 13 марта 2009
y = ['%02d'%v for v in x]
0 голосов
/ 14 марта 2009

Альтернативой форматированию строк будет использование метода zfill () для строки:

y = [str(i).zfill(2) for i in x]

Еще одна вещь: вы можете после заполнения, основываясь на самом большом элементе в списке, поэтому вместо использования 2, вы можете сделать:

pad_length = len(str(max(x)))
y = [str(i).zfill(pad_length) for i in x]
0 голосов
/ 13 марта 2009

, чтобы получить 0:

y = ['%02d' % i for i in x]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...