您可以使用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() 函数,每次迭代都从l 中选择一个项目。
第二种解决方案l_new = random.choices(l, k=30)只需调用choices()函数并让它生成列表,您必须指定k,即要选择的元素数。
还有另一种方式需要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生成