在shuffle(Python)之后附加到列表

时间:2016-03-09 22:50:46

标签: python append shuffle

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,4,4]]

adb logcat

提前致谢!

d

2 个答案:

答案 0 :(得分:4)

这是因为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[:])

答案 1 :(得分:1)

Shuffle在原地工作,返回无。 奇怪的是,它在10次尝试中返回相同的列表。有可能你没有做足够多次,所以shuffle在原始中几次返回相同的结果。试着多次测试一下。 也许这样做:

random.seed(x)

在循环中。