python,在特定范围内打乱列表数组?

python, shuffle a array of list in a specifiic range?

我想问一下我是否在 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)

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

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

这会从源​​列表中抽取 3 个元素的样本(以随机顺序生成相同的 3 个元素),并将它们重新分配给相同的索引。

作为参考,如果您想使用 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]]