【发布时间】:2019-01-25 18:10:07
【问题描述】:
是否有一个命令可以随机抽取列表中的项目并将其删除? 假设命令名为 cmd,我想要类似的东西?
l = [1,2,4,6]
r = cmd(l)
r = 4
l = [1,2,6]
【问题讨论】:
标签: python python-3.x list random
是否有一个命令可以随机抽取列表中的项目并将其删除? 假设命令名为 cmd,我想要类似的东西?
l = [1,2,4,6]
r = cmd(l)
r = 4
l = [1,2,6]
【问题讨论】:
标签: python python-3.x list random
使用random.randint 获取随机索引并使用pop 从列表中获取具有该索引的元素
>>> import random
>>> l = [1,2,4,6]
>>> idx = random.randint(0, len(l)-1)
>>> r = l.pop(idx)
>>> r
4
>>> l
[1, 2, 6]
【讨论】:
randint() 包括结束编号,所以如果选择len(l) - 这将是一个无效的索引并导致IndexError 弹出尝试...你想要random.randrange(len(l))
randint 调用randrange(a, b+1) 所以你不妨直接调用randrange :)
你可以试试这个:l.pop(random.randint(0, len(l)))
附言抱歉,忘记随机了
【讨论】:
使用random.shuffle 和pop 从列表中随机播放:
import random
lst = [1, 2, 4, 6]
random.shuffle(lst)
r = lst.pop()
print(r) # 4
print(lst) # [1, 2, 6]
【讨论】:
我能想到的最简单的方法是使用shuffle() 随机化列表中的元素位置,然后在需要时使用pop()。
>>> from random import shuffle
>>> shuffle(l)
>>> l.pop()
#driver 值:
IN : l = [1,2,4,6]
OUT : 4
来自 PyDocs:
random.shuffle(x[, random])
Shuffle the sequence x in place.
【讨论】:
使用模块random 中的函数choice 并使用remove 从列表中删除项目。
>>> from random import choice as get
>>> l = [1,2,3,4,6]
>>> r = get(l)
>>> r
3
>>> l.remove(r)
>>> l
[1, 2, 4, 6]
简而言之:
from random import choice as get
l = [1,2,3,4,6]
r = get(l)
l.remove(r)
【讨论】: