Python 如何在不洗牌原始列表的情况下洗牌复制的列表?

Python 如何在不洗牌原始列表的情况下洗牌复制的列表?,python,list,shuffle,Python,List,Shuffle,我使用的是python,我想将复制的列表洗牌到一个txt文件中(见下面的代码) 为什么shuffle函数也会随机化原始列表?我仅将副本用于函数调用 有什么想法吗?谢谢大家! from random import shuffle def shuffleList2txt(myList): shuffle(myList) f = open('randList.txt','w') f.write(str(liste)) f.close() return(my

我使用的是python,我想将复制的列表洗牌到一个txt文件中(见下面的代码)

为什么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应该是被洗牌的列表……)

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
的结果分配给您,您可以在不更改原始列表的情况下得到一个新的、无序的列表。

不确定您以前是否阅读过,但我认为了解您的情况是件好事。您和您的伴侣有一条狗。你叫她“乔”,你的伴侣叫她“克罗克”,现在你的伴侣叫美容服务来修剪克罗克的头发,你想当你到家时,乔还有长头发吗?列表对象虽然以两种不同的方式命名,但仍然是同一只老狗!请参考(或关于这个话题的几十个答案中的任何一个)来解决这个问题。哈哈。。。谢谢GBOFI的漂亮解释:)祝贺你对错误的问题给出了正确的答案!谢谢Jean Francois!你展示了一个很好的解决方案!我还检查了其他主题,了解了克隆列表的问题。是的,我不确定它是否重复,因为如果可以在一行中复制列表,那么先复制列表,然后应用就地洗牌似乎很笨拙。