如何在 python 中不重复地采样?

How to sample without duplication in python?

我想在长度为 100 的 list 中采样 30 个样本。

我可以这样使用 np.random.sample:

import numpy as np
l = list(range(100))
np.random.choice(l, 30)
# np.random.choice(l, 30) may be same with next time np.random.choice(l, 30)

这样可以得到一个样本组,但是我需要多次样本

例如,我需要长度为 10 的列表中的 3 个子列表(长度=3)(只是一个演示)。

重复的样本对我来说毫无意义。这意味着 [1,2,3] 和 [3,2,1] 对我来说是重复的。但是 np.random.choice 可能会为我生产两个。

python中有什么方法可以帮助我吗?或者有什么方法可以更快地比较采样列表?

如果您的列表只有 100 个元素,您可以 random.shuffle 它并获取前 30 个元素。

import random

l = list(range(100))
random.shuffle(l)
print(l[:30])