洗牌后附加到列表 (Python)
Append to list after shuffle (Python)
纽比问题:
我无法弄清楚为什么下面的代码不起作用。我正在尝试制作一个嵌套列表,其中 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
Shuffle 就地运行,返回 None。
奇怪的是它在 10 次尝试中返回相同的列表。可能您这样做的次数不够多,因此请将 returns 相同的结果随机播放几次。尝试多次测试。
也许做:
random.seed(x)
循环内部。
这是因为longList
里面的对象引用都是对对象myList
的引用。
正如上面, random.shuffle changes myList
in place, so each time you call 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[:])
纽比问题: 我无法弄清楚为什么下面的代码不起作用。我正在尝试制作一个嵌套列表,其中 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
Shuffle 就地运行,返回 None。 奇怪的是它在 10 次尝试中返回相同的列表。可能您这样做的次数不够多,因此请将 returns 相同的结果随机播放几次。尝试多次测试。 也许做:
random.seed(x)
循环内部。
这是因为longList
里面的对象引用都是对对象myList
的引用。
正如上面myList
in place, so each time you call 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[:])