将前导零添加到Python中的数字列表中

use*_*008 10 python string format list digits

我是Python的新手.我正在尝试调整列表的格式,如下所示:

data=[1,10,313,4000,51234,123456]
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为带有前导零的字符串列表:

result=['000001','000010','000313','004000','051234','123456']
Run Code Online (Sandbox Code Playgroud)

每个元素有6位数.

我知道单个数字X,我可以这样做:

str(X).zfill(6)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其应用于列表.我想在不使用for循环的情况下解决这个问题.

有人可以帮忙吗?谢谢.

the*_*eye 16

zfill列表推导中应用相同的功能,如下所示

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

或者,您可以使用字符串的format方法,格式说明符,如下所示

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

如果您要更频繁地进行格式化,那么您可以将其存储在变量中,如下所示

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

如果您使用的是Python 2.x,那么您可以使用map和这样的formatter函数

>>> map(formatter, data)
['000001', '000010', '000313', '004000', '051234', '123456']
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Python 3.x,则map返回一个可迭代map对象.因此,您需要显式创建一个列表,如下所示

>>> list(map(formatter, data))
['000001', '000010', '000313', '004000', '051234', '123456']
Run Code Online (Sandbox Code Playgroud)