Python改组列表的子列表的内容

时间:2018-01-11 10:49:47

标签: python list random shuffle nested-lists

我在python中有一个列表列表:l = [ [1,2,3], [4,5,6], [7,8,9] ]我希望随机播放每个子列表。我怎样才能做到这一点?

请注意,在对其内容进行洗牌时,应保留子列表的顺序。这与先前的问题不同,例如this question,其中对订单进行了洗牌并保留了内容。

我尝试了以下内容:

import random

x = [ [1,2,3], [4,5,6], [7,8,9] ]

random.shuffle(x) # This shuffles the order of the sublists,
                  # not the sublists themselves.

x = [ random.shuffle(sublist) for sublist in x ] # This returns None
                                                 # for each sublist.

print(x)    

3 个答案:

答案 0 :(得分:2)

你不需要" x ="在第4行。

代码:

import random

x = [ [1,2,3], [4,5,6], [7,8,9] ]

random.shuffle(x) # This shuffles the order of the sublists,
                  # not the sublists themselves.

[ random.shuffle(sublist) for sublist in x ] # This returns None
                                                 # for each sublist.

print(x) 

根据评论中的建议,这是一个较新的版本:

import random
x = [ [1,2,3], [4,5,6], [7,8,9] ]
random.shuffle(x) 
for sublist in x:
    random.shuffle(sublist) 
print(x) 

答案 1 :(得分:1)

shuffle在原地工作并且不返回任何内容,因此请使用:

random.shuffle(x)
for i in x:
    random.shuffle(i)
print(x)

答案 2 :(得分:-1)

您可以尝试另一个名为sample的函数。我使用的是python 3.6。

来自随机导入的

x = [x中的i的样本(i,len(i))] 洗牌(x)的

很容易!虽然很容易解决,但您可以尝试其他功能。