列表列表中的随机样本

时间:2016-06-09 22:30:56

标签: python list random random-sample

在python中,我有一个列表列表x,如下所示:[[1, 2, 3],[4, 5, 6], [7, 8, 9]]

我有另一个列表y,就像[1, 2, 3, 4, 5, 6, 7, 8, 9]

一样

我需要从y中的x中获取两个不在x列表中的随机项,因此我可以在[[1, 2, 9], [4, 5, 6], [7, 8, 3]]中切换它们,目标类似于{ {1}}。我目前的方法如下:

done = False
while not done:
    switchers = random.sample(y, 2)
    if indexInCourse(x, switchers[0]) != indexInCourse(course, switchers[1]):
        done = True

indexInCourse是一个函数,它返回列表中项目所在的列表,因此对于(x, 1),它将返回0。目标是switchers是2个不同的数字,这些数字在整体的不同列表中,所以像[1, 9][4, 7]一样。我当前的方法有效,但对于我经历过的大量列表来说速度非常慢。有没有人知道更多的pythonic方法呢?

1 个答案:

答案 0 :(得分:2)

为什么不首先从x随机选择两个不同的列表,然后然后在它们之间随机选择两个元素?

lists = random.sample(x, 2)
# now we swap two random elements between lists[0], lists[1]