如何在Python中从列表中弹出多个随机元素?
每当我从原始列表中采样时,我都会尝试从原始列表中删除元素如何在Python中从列表中弹出多个随机元素?,python,Python,每当我从原始列表中采样时,我都会尝试从原始列表中删除元素 list_a = ["a", "b", "c", "d"] list_b = np.random.choice(list_a, 2) 当我np.random.choice时,我希望list\u a是一个不包含list\u b元素的列表,您可以将list\u a中存在的list\u b元素排除在外: 使用列表理解: list_a = ["a", "b", "c", "d"] list_b = np.random.choice(list_a
list_a = ["a", "b", "c", "d"]
list_b = np.random.choice(list_a, 2)
当我
np.random.choice
时,我希望list\u a
是一个不包含list\u b
元素的列表,您可以将list\u a
中存在的list\u b
元素排除在外:
使用列表理解:
list_a = ["a", "b", "c", "d"]
list_b = np.random.choice(list_a, 2)
print([x for x in list_a if x not in list_b])
print(list_b)
输出:
['c', 'd']
['b' 'a']
这可以使用python提供的remove()函数来完成 您可以在此处阅读有关remove()的更多信息: 结果:
list_a = [a, c]
list_b = [b, d]
您可以洗牌列表,然后将其拆分,得到采样的元素和剩余的元素
import numpy as np
list_a = ["a", "b", "c", "d"]
np.random.shuffle(list_a)
list_b, list_a = list_a[:2], list_a[2:]
不必使用
choice
函数,您可以获得一个随机整数作为索引,并在列表中使用pop()
:
随机导入
列表a=[“a”、“b”、“c”、“d”]
def选择和删除(列表,项目):
样本=[]
对于范围内的i(0,项)
sample.append(list.pop(random.randint(0,len(list)-1))
退货单、样品
然后运行:
list_a,sample=选择并移除(list_a,2)
但是请注意,如果列表为空,或者如果您想选择更多可用项目,这将抛出一个
ValueError
,请检查此代码,同时此代码可能会回答问题,提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
import numpy as np
list_a = ["a", "b", "c", "d"]
np.random.shuffle(list_a)
list_b, list_a = list_a[:2], list_a[2:]
>>> import numpy as np
>>> list_a = ["a", "b", "c", "d"]
>>> _ = [list_a.remove(i) for i in np.random.choice(list_a, 2) if i in list_a]
>>> list_a
['b', 'd']