使列表中的所有数字成为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间所有数字的随机列表(列表中的数字不重复)