python,在特定范围内随机播放列表数组?

时间:2015-11-24 16:43:01

标签: python list shuffle

我想问一下我是否在python中得到了一个列表数组:

a = [[1, 2, 3, 4, 5, 6], 
     [1, 2, 3, 4, 5, 6],
     [1, 2, 3, 4, 5, 6]]

如何在a[1][1]a[1][4]范围内随机播放?

我只知道正常的洗牌

random.shuffle(a)

2 个答案:

答案 0 :(得分:7)

从子列表中取样,样本大小设置为相同的长度,然后将该样本分配回切片:

a[1][1:4] = random.sample(a[1][1:4], 3)

这将从源列表中获取3个元素的样本(以随机顺序生成相同的3个元素),并将这些元素分配回相同的索引。

答案 1 :(得分:1)

作为参考,如果你想使用shuffle,你可以遵循Martijn给出的相同方法,但是它需要将切片分配给一个名称,因为shuffle混合了适当的东西

>>> s=a[1][1:4]
>>> s
[2, 3, 4]
>>> shuffle(s)
>>> s
[4, 2, 3]
>>> a[1][1:4] = s
>>> a
[[1, 2, 3, 4, 5, 6], [1, 4, 2, 3, 5, 6], [1, 2, 3, 4, 5, 6]]