繁体   English   中英

如何在不改组原始列表的情况下混洗复制的列表?

[英]How to shuffle a copied list without shuffling the original list?

我正在使用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的结果random.sample为您提供一个新的, random.sample排列的列表,而无需更改原始列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM