我在列表中有一堆数字,并希望以漂亮的方式打印它们,以便它们在右侧对齐。
numbers = [192829, 88288, 912, 1992, 2828, 38]
for number in numbers:
print("{:6d}".format(number))
这给了我:
192829
88288
912
1992
2828
38
这很有效,因为我知道最长的数字是6位数,所以我硬编码6:"{:6d}"
如果我不知道最长的数字怎么办?我能想到的唯一解决方案如下。
length = len(str(max(numbers)))
output_template = "{:" + str(length) + "d}"
for number in numbers:
print(output_template.format(number))
有更好的方法吗?
答案 0 :(得分:3)
您可以将变量传递到str.format
,您无需创建模板:
numbers = [192829, 88288, 912, 1992, 2828, 38]
for number in numbers:
print("{0:{1}d}".format(number,len(str(max(numbers)))))
答案 1 :(得分:0)
LEN(STR(最大值(数字))
为您提供最大数字的长度,因此您可以使用此
答案 2 :(得分:0)
你可以尝试:
>>> numbers = [192829, 88288, 912, 1992, 2828, 38]
>>> length = len(str(max(numbers))) # max give you larget number and len find its length
>>> for x in numbers:
... print("{:{}d}".format(x,length))
...
192829
88288
912
1992
2828
38
答案 3 :(得分:0)
这是另一种方式;
numbers = [192829, 88288, 912, 1992, 2828, 38,4536,3564576,2342342]
maxlen=len(max(str(numbers),key=len))
print (("{:^{dif}}\n"*len(numbers)).format(*numbers,dif=maxlen))