从列表中填充数据

Populate data from a list

我有一个包含以下项目的列表

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

每一项都是11.1的倍数,列表长度为8。 我想生成另一个包含 30 个项目的列表,其值为 11.1、22.2、33.3、55.5 出现在原始列表中 l.

我想知道如何将数据从列表 l 填充到 l_new

你可以使用random模块来完成:

import random

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = [random.choice(l) for _ in range(0, 30)]
print(l_new)

#OUTPUT:
#[11.1, 11.1, 22.2, 33.3, 22.2, 11.1, 33.3, 11.1, 55.5, 11.1, 33.3, 22.2, 55.5, 22.2, 22.2, 33.3, 11.1, 11.1, 33.3, 22.2, 33.3, 11.1, 11.1, 33.3, 22.2, 33.3, 33.3, 11.1, 33.3, 22.2]

l_new = random.choices(l, k=30)
print(l_new)

#OUTPUT:
#[11.1, 33.3, 33.3, 55.5, 33.3, 33.3, 55.5, 11.1, 22.2, 11.1, 55.5, 11.1, 11.1, 55.5, 22.2, 22.2, 22.2, 33.3, 11.1, 33.3, 55.5, 55.5, 33.3, 11.1, 11.1, 55.5, 22.2, 22.2, 11.1, 22.2]

第一个解决方案 l_new = [random.choice(l) for _ in range(0, 30)] 使用列表理解和 random.choice() 函数,每次迭代 select 来自 l 的一个项目。

第二个解决方案l_new = random.choices(l, k=30)只需调用choices()函数并让它生成列表,您必须指定k,即select的元素数].


还有另一种方法需要 numpy 模块:

import numpy

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = list(numpy.random.choice(l, size=30))
print(l_new)

#OUTPUT:
#[11.1, 33.3, 11.1, 22.2, 33.3, 22.2, 22.2, 33.3, 55.5, 33.3, 22.2, 33.3, 22.2, 55.5, 33.3, 33.3, 33.3, 55.5, 33.3, 11.1, 11.1, 11.1, 55.5, 11.1, 33.3, 33.3, 22.2, 22.2, 33.3, 22.2]

列表由numpy.random.choice

生成