Как распечатать список кортежей? - PullRequest
0 голосов
/ 18 февраля 2020

Это мой код:

def points_per_game(master_list):
container1= []
for line in master_list:
    container1.append((float(line[18]),line[0],line[2]))
container1.sort(reverse=True)
container1 = container1[:10]
return container1

И вывод моего кода представляет собой список кортежей:

[(1.92, 'Wayne Gretzky', 'C'), (1.88, 'Mario Lemieux', 'C'), (1.5, 'Mike Bossy', 'R'), (1.4, 'Joe Malone', 'C'), (1.39, 'Bobby Orr', 'D'), (1.33, 'Connor McDavid', 'C'), (1.31, 'Marcel Dionne', 'C'), (1.28, 'Sidney Crosby', 'C'), (1.27, 'Peter Stastny', 'C'), (1.25, 'Peter Forsberg', 'C')]

Как превратить список в рисунок ниже, изменив порядок числа с плавающей запятой, имени и буквы в формате "{:<20s}{:>8s}{:>16s}" в main ()? enter image description here

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Просто l oop поверх элементов списка и отформатируйте его. Вы можете использовать распаковку кортежей, чтобы изменить порядок элементов.

for score, player, letter in points_per_game(master_list):
    print("{:<20s}{:>8s}{:>16.2f}".format(player, letter, score))

Вам необходимо использовать f форматирование для float баллов, и вы можете использовать .2, чтобы указать 2 цифры после десятичной дроби.

0 голосов
/ 18 февраля 2020

Вы можете передать формат в функции и распечатать, используя map (без l oop альтернатива)

formatter = lambda tup: "{:<20s}{:>8s}{:>16s}".format(*map(str, tup))
print('\n'.join(map(formatter, your_tuple_list)))
...