Добавьте в конце «0», чтобы каждая часть списка имела 5 символов. - PullRequest
1 голос
/ 08 июля 2020

Я пытаюсь перебрать список (называемый 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']

Единственный способ получить нужное количество символов - это создать бесконечное l oop, удалив оператор "break".

Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 08 июля 2020

Использовать встроенный zfill:

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

вывод:

['00123', '00002', '34322', '00332']
0 голосов
/ 08 июля 2020

Однократное добавление '0' происходит из-за if l oop внутри while l oop. Это можно исправить, добавив внутрь while l oop. Первый фрагмент кода предполагает, что '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)
0 голосов
/ 08 июля 2020

Я не использую Python, так что простите меня, если мой ответ не лучший в терминах python, но я вижу из вашего кода, что он ведет себя именно так, как ожидалось. Вам нужно добавить еще один sub l oop. Поэтому вместо «если» вы должны добавить while len ... добавить ноль ... что-то вроде того. Я думаю, что python не имеет никаких функций string.pad. Если да, вы можете это использовать. Ах, просто сделал быстрый поиск и нашел это ...

Python сайт

0 голосов
/ 08 июля 2020

Полагаю, вы хотите, чтобы результат был в форме: ['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)
...