为什么在下面的代码中,shuffle从第二次迭代开始生成相同的排列?

2024-10-05 14:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用shuffle来排列列表的内容。第一次迭代按预期工作,并生成原始列表的排列。然而,在第二次迭代之后,我得到了写入文件的相同排列。为什么代码在进行的迭代中不产生另一个排列

import random;

f = open('GenerationNumbers.txt', 'w')

request = [ 128,
            512,
            2048,
            512,
            64,
            64,
            512,
            1024,
            1024,
            64,
           ]

#server
server = [ 4096,
           2048,
           2048
         ]

newrequest = []
newserver = []

for i in range(0, 30):
    random.shuffle(request)
    newrequest.append(request)
    random.shuffle(server)
    newserver.append(server)


f.write(str(newrequest)+"\n")
f.write(str(newserver))
f.flush()
f.close()

以下是输出文件的一部分:

[[1024, 64, 512, 512, 128, 64, 2048, 64, 512, 1024], [1024, 64, 512, 512, 128, 64, 2048, 64, 512, 1024], [1024, 64, 512, 512, 128, 64, 2048, 64, 512, 1024], [1024, 64, 512, 512, 128, 64, 2048, 64, 512, 1024], [1024, 64, 512, 512, 128, 64, 2048, 64, 512, 1024] ....

[[2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], [2048, 4096, 2048], ...


Tags: 文件代码import内容列表serverrequestrandom
1条回答
网友
1楼 · 发布于 2024-10-05 14:29:19

你一次又一次地向同一个列表添加引用,并将它们洗牌到位。如果您想以不同的顺序保留列表的不同副本,则必须在每次迭代中复制列表

你可以这样做:

for i in range(0, 30):
    random.shuffle(request)
    newrequest.append(request[:])
    random.shuffle(server)
    newserver.append(server[:])

相关问题 更多 >