在Python

时间:2017-06-28 01:45:39

标签: python string list python-3.x prepend

如果它不是必要的位数,我试图在列表中的每个数字前面添加零。

    lst = ['1234','2345']
    for x in lst:
        while len(x) < 5:
            x = '0' + x
    print(lst)

理想情况下,这会打印['012345','02345']

5 个答案:

答案 0 :(得分:10)

您可以使用zfill

  

在左边填充一个数字字符串s,其数字为零,直到给定   达到宽度

lst = ['1234','2345']
[s.zfill(5) for s in lst]
# ['01234', '02345']

或者使用{em>填充和对齐

format方法:

["{:0>5}".format(s) for s in lst]
# ['01234', '02345']

答案 1 :(得分:2)

您的代码不能完成这项工作,因为python中的字符串是不可变的,有关详细信息,请参阅此内容Why doesn't calling a Python string method do anything unless you assign its output?

你可以在这种情况下枚举这样:

lst = ['1234','2345', "23456"]
for i, l in enumerate(lst):
  if len(l) < 5:
    lst[i] = '0' + l
print(lst)
  

[&#39; 01234&#39;,&#39; 02345&#39;,&#39; 23456&#39;]

答案 2 :(得分:1)

你可以使用这样的列表理解:

>>> ['0' * (5-len(x)) + x for x in lst]
['01234', '02345']

list + map尝试:

>>> list(map(lambda x: '0' * (5-len(x)) + x, lst))
['01234', '02345']

答案 3 :(得分:1)

最终,这是完成工作的答案的组合。

lst = ['1234','2345']
newlst = []

for i in lst:
    i = i.zfill(5)
    newlst.append(i)

print(newlst)
如果我的例子不清楚,我道歉。感谢所有提供答案的人!

答案 4 :(得分:0)

你可以这样做:

>>> lst = ['1234','2345']
>>> lst = ['0' * (5 - len(i)) + i for i in lst]
>>> print(lst)
['01234', '02345']