如果它不是必要的位数,我试图在列表中的每个数字前面添加零。
lst = ['1234','2345']
for x in lst:
while len(x) < 5:
x = '0' + x
print(lst)
理想情况下,这会打印['012345','02345']
答案 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']