列表列表中的随机样本
Random sample from list of lists
在python中,我有一个列表列表,x
,像这样:[[1, 2, 3],[4, 5, 6], [7, 8, 9]]
我还有另一个列表,y
,就像这样[1, 2, 3, 4, 5, 6, 7, 8, 9]
我需要从 y
中随机获取 2 个不在 x
列表中的项目,这样我就可以在 x
中切换它们,目标是喜欢 [[1, 2, 9], [4, 5, 6], [7, 8, 3]]
。我目前的方法如下:
done = False
while not done:
switchers = random.sample(y, 2)
if indexInCourse(x, switchers[0]) != indexInCourse(course, switchers[1]):
done = True
indexInCourse
是一个 returns 的函数,它列出了一个项目在列表列表中,所以对于 (x, 1)
它将 return 0
.目标是 switchers
是 2 个不同的数字,它们在整个不同的列表中,所以像 [1, 9]
或 [4, 7]
。我当前的方法有效,但对于我浏览的大量列表来说速度非常慢。有谁知道更 pythonic 的方法来做到这一点?
为什么不先从 x
中随机选择两个不同的列表,然后 然后 在它们之间交换随机选择的两个元素?
lists = random.sample(x, 2)
# now we swap two random elements between lists[0], lists[1]
在python中,我有一个列表列表,x
,像这样:[[1, 2, 3],[4, 5, 6], [7, 8, 9]]
我还有另一个列表,y
,就像这样[1, 2, 3, 4, 5, 6, 7, 8, 9]
我需要从 y
中随机获取 2 个不在 x
列表中的项目,这样我就可以在 x
中切换它们,目标是喜欢 [[1, 2, 9], [4, 5, 6], [7, 8, 3]]
。我目前的方法如下:
done = False
while not done:
switchers = random.sample(y, 2)
if indexInCourse(x, switchers[0]) != indexInCourse(course, switchers[1]):
done = True
indexInCourse
是一个 returns 的函数,它列出了一个项目在列表列表中,所以对于 (x, 1)
它将 return 0
.目标是 switchers
是 2 个不同的数字,它们在整个不同的列表中,所以像 [1, 9]
或 [4, 7]
。我当前的方法有效,但对于我浏览的大量列表来说速度非常慢。有谁知道更 pythonic 的方法来做到这一点?
为什么不先从 x
中随机选择两个不同的列表,然后 然后 在它们之间交换随机选择的两个元素?
lists = random.sample(x, 2)
# now we swap two random elements between lists[0], lists[1]