Как перетасовать скопированный список, не перетасовывая оригинальный список?
Я использую Python и хочу перетасовать скопированный список, который я пишу после этого в текстовый файл (см. Мой код ниже).
Почему функция shuffle также рандомизирует исходный список? Я использую копию только для вызова функции.
Есть идеи? Спасибо!
from random import shuffle
def shuffleList2txt(myList):
shuffle(myList)
f = open('randList.txt','w')
f.write(str(liste))
f.close()
return(myList)
liste = [1,2,3,4,5,6,7,8,9,10]
copy = liste
shuffledList = shuffleList2txt(copy)
liste и shuffledList - это одно и то же! Зачем? liste должен быть оригинальным, а shuffledList должен быть перетасованным списком....:)
1 ответ
Решение
random.shuffle
работает на месте. Конечно, вы можете сделать копию списка до перетасовки, но вам будет лучше с random.sample
, взяв образец... из всего списка:
>>> l = [1,2,3,4]
>>> random.sample(l,len(l))
[3, 1, 2, 4]
>>> l
[1, 2, 3, 4]
так присваивая результат random.sample
дает новый перетасованный список без изменения исходного списка.