首页 > 解决方案 > Python创建列表列表

问题描述

我想知道是否有更好的方法来创建一个列表列表,其中每个列表都是另一个列表的随机排列。这就是我编写的代码,假设 numpy.random 是 import as rd :

def shuffle(L):
    i = rd.randint(0,len(L))
    j = rd.randint(0,len(L))
    L[i], L[j] = L[j], L[i]
    return 

list_base= [0,1,2,3]
list_of_list=[]
for k in range(4):
    M = list_base
    for i in range(5):
        shuffle(M)
    list_of_list.append(M[:])

标签: pythonlist

解决方案


使用random.shuffle

import random
input_list = [0,1,2,3]
shuffled_lists = []
for x in range(4):
  lst = input_list[:]  # copy, since ...
  random.shuffle(lst)  # ... this modifies it in-place
  shuffled_lists.append(lst)

print(shuffled_lists)

输出例如

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

这并不能保证所有排列shuffled_lists都是唯一的!


推荐阅读