Ответ 1
Вы можете использовать понимание списка (Python 2.6 +):
y = ["{0:0>2}".format(v) for v in x]
Или для Python до 2.6:
y = ["%02d" % v for v in x]
Изменить: пропустил тот факт, что вам нужна нулевая прокладка...
Кто-нибудь знает, какую магию я должен использовать, чтобы изменить список x:
x = [1,2,3,4,5,11]
в список y?
y = ['01', '02', '03', '04', '05', '11']
Спасибо всем за то, что помогли мне...
Вы можете использовать понимание списка (Python 2.6 +):
y = ["{0:0>2}".format(v) for v in x]
Или для Python до 2.6:
y = ["%02d" % v for v in x]
Изменить: пропустил тот факт, что вам нужна нулевая прокладка...
Вы хотите использовать встроенную функцию map
:
>>> x = [1,2,3,4,5]
>>> x
[1, 2, 3, 4, 5]
>>> y = map(str, x)
>>> y
['1', '2', '3', '4', '5']
EDIT Вы изменили требования ко мне! Чтобы он отображал ведущие нули, вы делаете это:
>>> x = [1,2,3,4,5,11]
>>> y = ["%02d" % v for v in x]
>>> y
['01', '02', '03', '04', '05', '11']
Я бы сам воспользовался списком, но вот еще одно решение, использующее карту для заинтересованных...
map(lambda v: "%02d" %v, x)
Попробуйте следующее:
>>> [str(v).rjust(2,'0') for v in x]
['01', '02', '03', '04', '05', '11']
rjust как метод строкового класса, принимает целочисленный аргумент (длина результата) и необязательный символ заполнения
чтобы получить 0:
y = ['%02d' % i for i in x]
y = ['%02d'%v for v in x]
Альтернативой форматированию строк будет использование метода zpill():
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]