如何在不打乱原始列表的情况下打乱复制的列表?

How to shuffle a copied list without shuffling the original list?

我正在使用 python 并想将我之后写入的复制列表随机播放到 txt 文件中(请参阅下面的代码)。

为什么随机播放函数也会随机化原始列表?我只将副本用于函数调用。

有什么想法吗?谢谢!

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 应该是打乱后的列表.... :)

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 的结果会在不更改原始列表的情况下为您提供一个新的、随机排列的列表。