Skip to main content
 首页 » 编程设计

python之如何将列表洗牌 6 次

2025年05月04日16lautakyan007

我想将一个列表洗牌 6 次,但我在所有 6 次中都得到相同的结果。谁能帮我找出问题所在?

这是我使用的代码

import random 
lis1=[0,1,2,3] 
lis2=[] 
for i in range(6): 
    random.shuffle(lis1) 
    lis2.append(lis1) 
print lis2 

这是我得到的示例结果

[[1,3,2,0],[1,3,2,0],[1,3,2,0],[1,3,2,0],[1,3,2,0],[1,3,2,0]] 

如果我得到困惑的列表,如何按升序对它们进行排序?比如,我想得到这个 -

[[0,1,2,3],[2,3,1,0],[2,1,3,0],[1,0,3,2]] 

进入这个-

[[0,1,2,3],[1,0,3,2],[2,1,3,0],[2,3,1,0]] 

请您参考如下方法:

首先,您的代码将 lis1 引用重复插入到 lis2 中。由于 lis1 一直保持不变,因此所有 lis2 元素最终都指向同一个对象。要解决此问题,您需要更改 append() 行以每次都复制列表:

lis2.append(lis1[:]) 

现在,要对结果进行排序,只需在循环后调用 sort():

lis2.sort()