对于x> 1,如何从列表中选择x个随机元素? LEN(名单)?

时间:2016-03-10 21:04:37

标签: python list random

我需要从列表中选择随机元素。 并且随机元素的数量大于列表的长度(因此我将重复)。 因此,我不能使用random.sample(),因为样本不能大于总体。 有没有人有解决方案?

例如:

lst = [1,2,3,4]

如何从此列表中选择5个随机元素,如[1,4,3,1,2]?

5 个答案:

答案 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]