从列表中删除随机样本

Con*_*nor 6 python random list

我有一个列表中的数据,如:

L = [(3,4,5),(1,4,5),(1,2,3),(1,2,3)]
Run Code Online (Sandbox Code Playgroud)

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

import random
t1 = random.sample(set(L),2)
Run Code Online (Sandbox Code Playgroud)

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

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

eum*_*iro 7

t1 = [L.pop(random.randrange(len(L))) for _ in xrange(2)]
Run Code Online (Sandbox Code Playgroud)

不会改变其余元素的顺序L.

  • 对于那些不知道的人来说,xrange 在 Python3 中已被 range 取代。 (2认同)

jva*_*ver 7

一种选择是shufle列表,然后弹出前两个元素.

import random
L = [(3,4,5),(1,4,5),(1,2,3),(1,2,3)]
random.shuffle(L)
t1 = L[0:2]
Run Code Online (Sandbox Code Playgroud)