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