在python中获取列表的随机切片/分数



假设我们有以下列表:

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

现在我们想要上一个列表的随机部分,即长度为len(l) * frac的随机子列表。因此,如果frac=0.2,则输出列表的长度应为2(0.2 x 10(。

预期结果如下:

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l_new = sample(list=l, frac=0.3) # [4, 6, 8]
l_new = sample(list=l, frac=0.6) # [0, 1, 4, 6, 7, 8]

我该如何实现这种行为?我看过random.sample,但它的工作原理是提供大量元素,而不是一小部分元素。

另一种选择是将random.samplek = int(len(l) * frac)一起使用,如下所示:

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
frac = 0.3
l = random.sample(l, int(len(l) * frac))
print(l)
>>> [4, 7, 9]

将其用作函数:

# Randomly Sample a fraction of elements from a list
def random_sample(l, frac=0.5):
return random.sample(l, int(len(l) * frac))

最新更新