10

我的列表中有数据,例如:

L = [(3,4,5),(1,4,5),(1,2,3),(1,2,3)]

我需要随机采样 2 的大小,所以我想使用:

import random
t1 = random.sample(set(L),2)

现在 T1 是随机拉取值的列表,但我想从初始列表中删除那些从初始列表中随机拉取的值。我可以做一个线性 for 循环,但对于我试图为更大的列表执行此操作的任务。所以运行时间将永远存在!

关于如何解决这个问题的任何建议?

4

2 回答 2

14
t1 = [L.pop(random.randrange(len(L))) for _ in xrange(2)]

不会改变L.

于 2013-05-10T07:24:40.817 回答
12

一种选择是随机播放列表,然后弹出前两个元素。

import random
L = [(3,4,5),(1,4,5),(1,2,3),(1,2,3)]
random.shuffle(L)
t1 = L[0:2]
于 2013-05-10T07:26:38.973 回答