我需要从列表中选择随机元素。 并且随机元素的数量大于列表的长度(因此我将重复)。 因此,我不能使用random.sample(),因为样本不能大于总体。 有没有人有解决方案?
例如:
lst = [1,2,3,4]
如何从此列表中选择5个随机元素,如[1,4,3,1,2]?
答案 0 :(得分:2)
如果我理解正确,你想从群体中随机挑选,这应该可以解决问题:
if (e.CommandName == "Preview")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = grvAcceptRejectRootCause.Rows[index];
string lblAction = ((Label)row.FindControl("lblAction ")).Text;
string txtRootCause = ((TextBox)row.FindControl("txtRootCause")).Text;
}
答案 1 :(得分:0)
import numpy
lst = [1,2,3,4]
choices = numpy.random.choice(lst, size=5, replace=True)
答案 2 :(得分:0)
在循环或列表推导中使用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)
答案 3 :(得分:0)
您不需要第三方模块。只需使用列表理解:
choices = [random.choice(lst) for _ in range(5)]
另一种缩短但效率不高的方法是:
choices = list(map(random.choice, [lst]*5))
在Python2中,map()
已经返回一个列表,所以你可以这样做:
choices = map(random.choice, [lst]*5)
答案 4 :(得分:0)
我的回答涉及random.choice功能和list comprehension。
我建议将魔法放在一个函数中,该函数的名称明确了它的作用。
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]