纽比问题: 我无法弄清楚为什么下面的代码不起作用。我正在尝试制作一个嵌套列表,其中 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>
提前致谢!
D
最佳答案
这是因为longList
里面的对象引用都是对对象myList
的。
如解释here , random.shuffle就地更改 myList
,所以每次调用 random.shuffle在它上面,它会覆盖它的内容。
一个解决方案是在每次打乱列表时克隆列表,有几种方法可以做到这一点 (How to clone a list in Python)。
在下面的代码中我选择切片:
from random import shuffle
myList = ["file1", "file2", "file3", "file4"]
longList = []
for x in range(0,10):
shuffle(myList)
longList.append(myList[:])
关于python - 洗牌后 append 到列表(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904285/