使列表中的所有数字成为3位数字[重复]

Posted

技术标签:

【中文标题】使列表中的所有数字成为3位数字[重复]【英文标题】:Making all numbers in a list 3 digit numbers [duplicate] 【发布时间】:2020-04-14 11:40:21 【问题描述】:

我有一个列表:

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

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

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

【问题讨论】:

python 中的数字没有前导零。你想把它们转换成字符串吗? 是的,没错。很抱歉没有提到这一点 [f"x:03" for x in arr] 【参考方案1】:

此列表推导将返回您想要的内容

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

【讨论】:

【参考方案2】:

根据这个线程Display number with leading zeros

可以使用str.zfill,需要先将数字转成字符串。

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:
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']

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于使列表中的所有数字成为3位数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在与整数配对的所有数字列表中的元组内创建一个列表[重复]

在Javascript中使数组中的所有数字成为绝对值[关闭]

导入random模块, 生成0-100间所有数字的随机列表(列表中的数字不重复)

PHP中的数字格式不正确[重复]

c_cpp 给定已排序的链接列表,删除所有具有重复数字的节点,只留下原始列表中的不同数字。

给定一个数字 n,列出所有 n 位数字,使得每个数字都没有重复数字