在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方法呢?
答案 0 :(得分:2)
为什么不首先从x
随机选择两个不同的列表,然后然后在它们之间随机选择两个元素?
lists = random.sample(x, 2)
# now we swap two random elements between lists[0], lists[1]