有没有更好的方法来随机洗牌两个相关列表而不破坏它们在另一个列表中的对应关系?我在 numpy.array
和 c#
中找到了相关问题,但并不完全相同。
作为第一次尝试,一个简单的 zip
技巧就可以了:
import random
a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
b = [2, 4, 6, 8, 10]
c = zip(a, b)
random.shuffle(c)
a = [e[0] for e in c]
b = [e[1] for e in c]
print a
print b
它将获得输出:
[[1, 2], [7, 8], [3, 4], [5, 6], [9, 10]]
[2, 8, 4, 6, 10]
就是觉得有点别扭。它还需要一个额外的列表。
原文由 clwen 发布,翻译遵循 CC BY-SA 4.0 许可协议
鉴于问题中显示的关系,我将假设列表的长度相同,并且
list1[i]
对应于list2[i]
对于任何索引i
。有了这个假设,打乱列表就像打乱索引一样简单: