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