use*_*285 1 python shuffle append
Newby 问题:我无法弄清楚为什么下面的代码不起作用。我正在尝试制作一个嵌套列表,其中 10 个嵌套列表中的每一个都采用不同的顺序。我得到的是相同的列表以相同的顺序重复 10 次。
所以我想要: [[1, 2, 4, 3], [4, 2, 3, 1], [2, 4, 3, 1]]
但我得到: [[2, 3, 1, 4], [2, 3, 1, 4], [2, 3, 1, 4]]
<pre>from random import shuffle
myList = ["file1", "file2", "file3", "file4"]
longList = []
for x in range(0,10):
shuffle(myList)
longList.append(myList)
print(longList)<code>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
D
这是因为里面的对象引用longList都是对对象的myList。
正如这里所解释的,random.shuffle 会发生变化myList,所以每次你调用random.shuffle时,它都会覆盖它的内容。
解决方案可以是每次洗牌时克隆列表,并且有几种方法可用(如何在 Python 中克隆列表)。
在以下代码中,我选择对其进行切片:
from random import shuffle
myList = ["file1", "file2", "file3", "file4"]
longList = []
for x in range(0,10):
shuffle(myList)
longList.append(myList[:])
Run Code Online (Sandbox Code Playgroud)