我该怎么做呢:
students = [("Abe", 200), ("Lindsay", 180), ("Rachel" , 215)]
进入这个:
Abe 200
Lindsay 180
Rachel 215
编辑:这应该适用于任何大小的列表。
答案 0 :(得分:5)
>>> students = [("Abe", 200), ("Lindsay", 180), ("Rachel" , 215)]
>>> for a, b in students:
... print '{:<7s} {}'.format(a, b)
...
Abe 200
Lindsay 180
Rachel 215
答案 1 :(得分:0)
编辑:有人更改了问题的关键细节 Aशwiniचhaudhary给出了一个很好的答案。如果你现在不能学习/使用string.format,那么解决问题的更通用/算法的方法是这样的:
for (name, score) in students:
print '%s%s%s\n'%(name,' '*(10-len(name)),score)
答案 2 :(得分:0)
使用rjust和ljust:
for s in students:
print s[0].ljust(8)+(str(s[1])).ljust(3)
输出:
Abe 200
Lindsay 180
Rachel 215
答案 3 :(得分:0)
对于 Python 3.6 + ,您可以将 f-string 用于Ashwini Chaudhary的单行版本:
>>> students = [("Abe", 200), ("Lindsay", 180), ("Rachel" , 215)]
>>> print('\n'.join((f'{a:<7s} {b}' for a, b in students)))
Abe 200
Lindsay 180
Rachel 215
如果您不知道列表中最长字符串的 length ,则可以计算,如下所示:
>>> width = max([len(s[0]) for s in students])
>>> print('\n'.join((f'{a:<{width}} {b}' for a, b in students)))
Abe 200
Lindsay 180
Rachel 215