添加尾随“0”使列表的每个部分都有 5 个字符

Add trailing "0" to have each part of the list have 5 chracters

我正在尝试遍历一个列表(称为 lista),以便打印出一个新列表,其中每个部分正好有 5 个字符。

lista = ['123', '2', '34322', '332']


while True:
        for i in lista:
            if len(lista[lista.index(i)]) < 5:
                lista[lista.index(i)] += '0'
        else:
            break
print(lista)

然而,我的输出是:

['1230', '20', '34322', '3320']

获得正确字符数的唯一方法是通过删除“break”语句创建无限循环。

非常感谢任何帮助。

我假设您希望输出采用以下形式: ['00123', '00002', '34322', '00332'] 如果这是真的,那么下面的代码就是您的解决方案!

lista = ['123', '2', '34322', '332']
zero="0"
finalList=[]
for i in lista:
    remainingChar=0
    if(len(i)<5):
        remainingChar=5-len(i)
        finalList.append((remainingChar*zero)+i)
    else:
        finalList.append(i)
print(finalList)

由于 while 循环内的 if 循环,所以发生了 '0' 的单次添加。这可以通过在内部添加 while 循环来解决。第一个代码片段假定 '0' 应该插入到左侧。第二个在右边插入'0'

lista = ['123', '2', '34322', '332']


while True:
    for i,j in enumerate(lista):
        while len(lista[i]) < 5:
            lista[i] = '0' + lista[i]
    else:
        break
print(lista)

向右插入 '0'

lista = ['123', '2', '34322', '332']


while True:
    for i,j in enumerate(lista):
        while len(lista[i]) < 5:
            lista[i] += '0'
    else:
        break
print(lista)

我不使用 Python,所以如果我的回答在 python 方面不是最好的,请原谅我,但我可以从您的代码中看到它的行为完全符合预期。 您需要添加另一个子循环。所以你应该添加一个而不是 'if' 而 len... 添加一个零.. 之类的东西。 我想 python 没有任何 string.pad 功能。如果可以,您可以使用它。 啊刚刚快速搜索发现了这个...

Python site

使用内置 zfill:

lista = [x.zfill(5) for x in lista]

输出:

['00123', '00002', '34322', '00332']