我是Python新手。我正在尝试调整列表的格式,如下所示:
data=[1,10,313,4000,51234,123456]
我希望将它们转换为带有前导零的字符串列表:
result=['000001','000010','000313','004000','051234','123456']
每个元素都有6位数字。
我知道单个数字X,我可以这样做:
str(X).zfill(6)
但我不确定如何将其应用于列表。我想在不使用for循环的情况下解决这个问题。
有人可以帮忙吗?感谢。
答案 0 :(得分:16)
在zfill
中应用相同的list comprehension功能,就像这样
>>> [str(item).zfill(6) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']
或者,您可以使用字符串的format
方法,format specifiers,就像这样
>>> ["{:06d}".format(item) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']
如果您打算更频繁地进行格式化,那么您可以将其存储在变量中,例如
>>> formatter = "{:06d}".format
>>> [formatter(item) for item in data]
['000001', '000010', '000313', '004000', '051234', '123456']
如果您使用的是Python 2.x,那么您可以使用map
和formatter
函数,就像这样
>>> map(formatter, data)
['000001', '000010', '000313', '004000', '051234', '123456']
如果您使用的是Python 3.x,map
将返回一个可迭代的map
对象。所以,你需要明确地创建一个列表,比如这个
>>> list(map(formatter, data))
['000001', '000010', '000313', '004000', '051234', '123456']