【问题标题】:Add trailing "0" to have each part of the list have 5 chracters添加尾随“0”以使列表的每个部分都有 5 个字符
【发布时间】:2020-10-29 06:26:58
【问题描述】:

我正在尝试遍历一个列表(称为 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”语句来创建无限循环。

非常感谢任何帮助。

【问题讨论】:

  • 我相信i 是您应该检查的长度,除了一些其他问题。
  • 试试这个,[x.rjust( 5, "0") for x in ['123', '2', '34322', '332']]
  • 请查看stackoverflow.com/help/someone-answers 了解如何接受答案并欢迎来到 SO。

标签: python list loops iteration infinite-loop


【解决方案1】:

我假设您希望输出采用以下形式: ['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)

【讨论】:

    【解决方案2】:

    '0' 的单次添加是由于 while 循环内的 if 循环而发生的。这可以通过在内部添加 while 循环来解决。第一个代码 sn-p 假定应将'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)
    

    【讨论】:

      【解决方案3】:

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

      Python site

      【讨论】:

        【解决方案4】:

        使用内置zfill

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

        输出:

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

        【讨论】:

        • 要求尾随,应为x.ljust(5, '0')
        • 由于列表是数字字符,我假设 OP 想要左填充。如果 OP 需要正确填写,那么您的答案是正确的。谢谢。
        猜你喜欢
        • 2021-11-06
        • 2016-07-20
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 2012-04-16
        • 2018-02-25
        • 1970-01-01
        相关资源
        最近更新 更多