Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中从列表中弹出多个随机元素?_Python - Fatal编程技术网

如何在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']