add leading zeros to a list of numbers in Python

自作多情 提交于 2020-11-26 06:27:51

问题


I am new to Python. I am trying to adjust the format of a list which looks like below:

data=[1,10,313,4000,51234,123456]

and I would like to convert them to a list of strings with leading zeros:

result=['000001','000010','000313','004000','051234','123456']

each of the element has 6 digits.

I know for a single number X, I can do:

str(X).zfill(6)

but I am not sure how to apply this to a list. I would like to solve this problem without using a for loop.

Anyone could help? Thanks.


回答1:


Apply the same zfill function in a list comprehension, like this

>>> [str(item).zfill(6) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']

Alternatively, you can use the string's format method, with format specifiers, like this

>>> ["{:06d}".format(item) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']

If you are going to do the formatting more often, then you can store that in a variable, like this

>>> formatter = "{:06d}".format
>>> [formatter(item) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']

If you are using Python 2.x, then you can use map and the formatter function, like this

>>> map(formatter, data)
['000001', '000010', '000313', '004000', '051234', '123456']

If you are using Python 3.x, map returns an iterable map object. So, you need to explicitly create a list, like this

>>> list(map(formatter, data))
['000001', '000010', '000313', '004000', '051234', '123456']


来源:https://stackoverflow.com/questions/29000613/add-leading-zeros-to-a-list-of-numbers-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!