从列表中删除随机样本

时间:2013-05-10 07:21:43

标签: python list random

我在列表中有数据:

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

不会更改L中其余元素的顺序。

答案 1 :(得分:6)

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

import random
L = [(3,4,5),(1,4,5),(1,2,3),(1,2,3)]
random.shuffle(L)
t1 = L[0:2]