我的任务是将得分(最后3个数字)从最高到最低排序。然而,这是有效的,我希望每个人的分数输出到单独的行。我该怎么做呢。这是我的代码:
elif ask==2:
list_data2=[]
with open('write_it.txt') as f:
for line in f:
line=line.split(',')
list_data2.append(sorted(line[:1])+sorted(map(int,line[2:]),reverse=True))
print (list_data2)
list_data2
是嵌套的list
:
[['Sid', 9, 8, 7], ['Tony', 9, 6, 4], ['Charlie', 4, 2, 1]]
答案 0 :(得分:0)
您可以使用for循环逐个打印每个嵌套列表:
>>> for data2 in list_data2:
print(data2)
['Sid', 9, 8, 7]
['Tony', 9, 6, 4]
['Charlie', 4, 2, 1]
但是如果你想以更好的方式对其进行格式化,你可以传递多个参数来打印,比如print(data2[0], data2[1], data2[2], data2[3])
,或者简而言之,使用print(*data2)
:
>>> for data2 in list_data2:
print(*data2)
Sid 9 8 7
Tony 9 6 4
Charlie 4 2 1
使用带有多个参数的print时的默认分隔符是' '
,但您可以使用关键字参数sep
更改它:
>>> for data2 in list_data2:
print(*data2, sep='\t')
Sid 9 8 7
Tony 9 6 4
Charlie 4 2 1
请注意,标签宽度取决于您的终端设置。您可以使用具有固定宽度列的格式字符串(由空格字符填充)来实现类似的效果:
>>> for data2 in list_data2:
print('%-12s %3d %3d %3d' % tuple(data2))
Sid 9 8 7
Tony 9 6 4
Charlie 4 2 1
但是,这种类似printf的%语法已被弃用,您应该使用str
的新.format()方法:
>>> for data2 in list_data2:
print('{0:<12} {1:3d} {2:3d} {3:3d}'.format(*data2))
Sid 9 8 7
Tony 9 6 4
Charlie 4 2 1
(有关更多示例,请参阅https://docs.python.org/2/library/string.html#format-examples)