使列表中的所有数字为3位数字

时间:2019-12-23 06:26:40

标签: python list numpy

我有一个清单:

a = [45,2, ... ,123,98]

如何通过在一个或两位数字前面加上零来将所有数字转换为三位数字?这将创建一个新列表,如:

b = [045,002, ... , 123,098]

5 个答案:

答案 0 :(得分:0)

此列表理解将返回您想要的内容

[str(n).zfill(3) for n in a]

答案 1 :(得分:0)

根据此线程Display number with leading zeros

您可以使用str.zfill,首先需要将数字转换为字符串。

答案 2 :(得分:0)

您不能用前导0表示整数。要作为字符串,请执行以下操作:

for i in range(len(a)):
  helper = str(a[i])
  while len(helper) < 3:
    helper = "0" + helper
  a[i] = helper

答案 3 :(得分:0)

def func(num):
    '''
    Adds leading 0s to numbers with < 3 digits, and returns as string
    '''
    if len(str(num))<3:
        num = '0'*(3-len(str(num)))+str(num)
    return str(num)

a = [45,2,123,98]

b = []
for num in a:
    b.append(func(num))

print(b)

>>> ['045', '002', '123', '098']

您还可以通过以下方式跳过for循环并将函数应用于列表a中的每个元素:

b = [_ for _ in map(func,a)]
print(b)
>>>  ['045', '002', '123', '098']

答案 4 :(得分:0)

您可以使用map和.format填充零:

list(map('{:03}'.format, [1,2,3]))                                                                                                                                                  
# ['001', '002', '003']