[英]How do I pick x random elements from a list, for x > len(list)?
我需要從列表中選擇隨機元素。 而且隨機元素的數量大於列表的長度(因此我將重復)。 因此,我不能使用random.sample(),因為樣本不能大於總體。 有沒有人有辦法解決嗎?
例如:
lst = [1,2,3,4]
如何從此列表中選擇5個隨機元素,例如[1,4,3,1,2]?
如果我正確理解,那么您想從總體中隨機選擇,這應該可以解決問題:
import random
list = [1, 2, 3, 4]
random_elements = [random.choice(list) for n in range(5)]
import numpy
lst = [1,2,3,4]
choices = numpy.random.choice(lst, size=5, replace=True)
在循環或列表理解中使用random.choice
可以從輸入列表中返回隨機元素。
這是一個列表理解示例:
from random import choice
lst = [10, 20, 30, 40]
num = 5
seq = [choice(lst) for _ in range(num)]
print(seq)
典型輸出
[20, 40, 10, 30, 20]
這與使用“傳統for
循環:
from random import choice
lst = [10, 20, 30, 40]
num = 5
seq = []
for _ in range(num):
seq.append(choice(lst))
print(seq)
您不需要第三方模塊。 只需使用列表理解即可:
choices = [random.choice(lst) for _ in range(5)]
另一種稍微短一些但不那么有效的方式是:
choices = list(map(random.choice, [lst]*5))
在Python2中, map()
已經返回一個列表,因此您可以執行以下操作:
choices = map(random.choice, [lst]*5)
我的答案涉及random.choice函數和列表理解 。
我還建議將魔術放入名稱明確表明其功能的函數中。
import random
def pick_n_samples_from_list(n, l):
return [random.choice(l) for n in range(n)]
n = 5
lst = [1, 2, 3, 4]
print(pick_n_samples_from_list(n, lst))
>[3, 1, 4, 4, 1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.