如何从以下列表中随机检索项目?
foo = ['a', 'b', 'c', 'd', 'e']
如何从以下列表中随机检索项目?
foo = ['a', 'b', 'c', 'd', 'e']
当前回答
如果需要索引,只需使用:
import random
foo = ['a', 'b', 'c', 'd', 'e']
print int(random.random() * len(foo))
print foo[int(random.random() * len(foo))]
random.choice也会这样做:)
其他回答
NumPy解决方案:NumPy.random.ochoice
对于这个问题,它的工作原理与接受的答案(import random;random.choice())相同,但我添加了它,因为程序员可能已经(像我一样)导入了NumPy
此外,这两种方法之间也存在一些差异,可能与您的实际用例有关。
import numpy as np
np.random.choice(foo) # randomly selects a single item
为了再现性,您可以执行以下操作:
np.random.seed(123)
np.random.choice(foo) # first call will always return 'c'
对于作为数组返回的一个或多个项目的示例,请传递size参数:
np.random.choice(foo, 5) # sample with replacement (default)
np.random.choice(foo, 5, False) # sample without replacement
这可能已经是一个答案,但您可以使用random.shuffle。示例:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random.shuffle(foo)
简而言之,使用random.sample方法
示例方法返回一个新列表,其中包含总体中的元素,而保持原始总体不变。结果列表按选择顺序排列,因此所有子切片也将是有效的随机样本。
import random
lst = ['a', 'b', 'c', 'd', 'e']
random.seed(0) # remove this line, if you want different results for each run
rand_lst = random.sample(lst,3) # 3 is the number of sample you want to retrieve
print(rand_lst)
Output:['d', 'e', 'a']
这是运行代码https://onecompiler.com/python/3xem5jjvz
你可以:
from random import randint
foo = ["a", "b", "c", "d", "e"]
print(foo[randint(0,4)])
我建议使用一个脚本来删除列表中随机选取的项目,直到列表为空:
维护一个集合并删除随机选取的元素(有选择),直到列表为空。
s=set(range(1,6))
import random
while len(s)>0:
s.remove(random.choice(list(s)))
print(s)
三次跑步给出三种不同的答案:
>>>
set([1, 3, 4, 5])
set([3, 4, 5])
set([3, 4])
set([4])
set([])
>>>
set([1, 2, 3, 5])
set([2, 3, 5])
set([2, 3])
set([2])
set([])
>>>
set([1, 2, 3, 5])
set([1, 2, 3])
set([1, 2])
set([1])
set([])