我在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)
答案 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)的
很容易!虽然很容易解决,但您可以尝试其他功能。