添加尾随“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 功能。如果可以,您可以使用它。
啊刚刚快速搜索发现了这个...
使用内置 zfill
:
lista = [x.zfill(5) for x in lista]
输出:
['00123', '00002', '34322', '00332']
我正在尝试遍历一个列表(称为 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 功能。如果可以,您可以使用它。 啊刚刚快速搜索发现了这个...
使用内置 zfill
:
lista = [x.zfill(5) for x in lista]
输出:
['00123', '00002', '34322', '00332']