簡體   English   中英

改組后附加到列表(Python)

[英]Append to list after shuffle (Python)

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>

提前致謝!

d

這是因為longList內部的對象引用全部是對myList對象的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[:])

隨機播放在原位運行,返回無。 奇怪的是,它嘗試10次返回相同的列表。 可能您做的次數不夠,所以隨機播放幾次會返回相同的結果。 嘗試對它進行大量測試。 也許做:

random.seed(x)

在循環內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM