Как в кортеже заменить все фамилии на случайные из созданного файла?
Нужно в кортеже заменить все фамилии на случайные из созданного файла.
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)