Как в кортеже заменить все фамилии на случайные из созданного файла?

Нужно в кортеже заменить все фамилии на случайные из созданного файла.

import random

foot = [('Андреев', 2001,'Полузащитник', 15, 10, 'Москва'),
('Иванов', 1990, 'Защитник',9, 5, 'Тула'),
('Николаев', 2000, 'Нападающий',10, 5, 'Тюмень'),
('Мамаев', 2002, 'Вратарь',13, 7, 'Ульяновск'),
('Александров', 1997, 'Защитник',10, 4, 'Оренбург')]


x = list(foot)

a = list(open('test.txt'))
a = random.choice(a)#Генерирует случайную фамилию из файла.
x[0][0] = a
print(a) 

Ответы (2 шт):

Автор решения: Oopss

Что-то этот вопрос часто повторяется. Перемешайте и последовательно читайте список, чтобы не было повторений.

Перемешивает изменяемую последовательность случайным образом.

import random
random.shuffle(lst)

Внимание! изменяет непосредственно сам объект последовательности.

Конечно изменить кортеж в список, изменить значения и если нужно, список в кортеж.


Мой ответ оказался не полезным, решил дополнить, потому что считаю что использовать random.choice не разумно, т.к могут быть повторы.

import random

foot = [('Андреев', 2001,'Полузащитник', 15, 10, 'Москва'),
('Иванов', 1990, 'Защитник',9, 5, 'Тула'),
('Николаев', 2000, 'Нападающий',10, 5, 'Тюмень'),
('Мамаев', 2002, 'Вратарь',13, 7, 'Ульяновск'),
('Александров', 1997, 'Защитник',10, 4, 'Оренбург')]
file=['Салах','Левандовски','Роналду','Мане','Мбаппе','Неймар']
random.shuffle(file)
foot_out=[]
for el1,el2 in zip(file,foot):
    out=(list(el2[1:]))
    out.insert(0,el1)
    foot_out+=(tuple(out),)
foot=foot_out
print(foot)

Замечание, пример учебный по этому нужно следить, чтобы len(foot) и len(file) , были равны.

→ Ссылка
Автор решения: VeekSY

Попробуйте:

a = list(open('test.txt'))
for i in foot:
    name = random.choice(a)
    i[0] = name
print(foot)
→ Ссылка