Python как убрать скобки при печати списка кортежей?

Как убрать скобки из этого вывода кортежа: [("fred's", 13), ("jack's", 19), ("mark's", 16), ("amy's", 12), ("finlay's", 17)].

Это код, который я использовал для вывода кортежа:

    file_path = "test.txt"
with open(file_path, 'r') as f:
    file_lines = f.readlines() 
names_and_scores = [(l.strip().split(' ')[0], int(l.strip().split(' ')[2])) for l in file_lines]
names_and_scores.sort(key=lambda x: x[1], reverse=True)
print(names_and_scores[:5])

Может как то так?

print ("".join(str(names_and_scores[:5])).strip("()"))

3 ответа

Решение

Ты вроде недоразумение. Как правило, вы никогда не можете удалять символы из кортежа. Поскольку они являются неизменяемыми, вы можете только создать новый и построить его, используя нужные элементы оригинала. Причина в том, что квадратные скобки заключаются в том, что вывод ваших "имен и оценок" был создан с использованием списка. То есть это список. Квадратные скобки означают, что это список, поэтому вы не можете "удалить их". Если вы хотите увидеть каждый кортеж без квадратных скобок, вы можете перебрать список кортежей и распечатать каждый кортеж. Таким образом, вы получите что-то вроде:

("Fred's", 13)
("Jack's", 12)

Если вы хотите убрать квадратные и квадратные скобки, вы можете обратиться к кортежу с индексами для значений. Ты можешь сделать:

print("PLAYER:\t\tSCORE:")
for i in names_and_scores[:5]:
    print("{}\t\t{}".format(i[0],i[1]))

Это будет перебирать нужную часть вашего списка (кажется, до пятого) и затем печатать что-то вроде...

PLAYER:    SCORE:
Jack's     12
Fred's     13

Вы можете игнорировать это с...

print("PLAYER:\t\tSCORE:")
    for i in names_and_scores[:5]:
        print("{}\t\t{}".format(i[0][:-2],i[1]))

Вот мой код и вывод:

list = [("fred's", 13), ("jack's", 19), ("mark's", 16), ("amy's", 12), ("finlay's", 17)]
print("PLAYER:\t\tSCORE")
for i in list:
        print("{}\t\t{}".format(i[0][:-2],i[1]))



PLAYER:         SCORE
fred            13
jack            19
mark            16
amy             12
finlay          17

names_and_scores[:5] это список кортежей, поэтому вы видите квадратные скобки вокруг вывода. Чтобы снять квадратные скобки, вы можете преобразовать список в строку, разделив запятыми все отдельные элементы кортежа в списке:

", ".join(names_and_scores[:5])

Самый простой способ, который я могу придумать, - это перебирать список

list=[("fred's", 13), ("jack's", 19), ("mark's", 16), ("amy's", 12), ("finlay's", 17)]
for item in list:
    name,number=item
    print(name,number)
Другие вопросы по тегам