在此寻找帮助/解决方案。
a = [1,2,3]
b = [1,2,3]
c = [1,2,3]
d = [a,b,c]
random.choice(random.choice(d))
这给了我1,2或3.但是如何找到这个随机函数使用的列表变量a
,b
,c
?我该如何使用或者索引函数的语法是什么?对于我的程序,我必须弹出随机选择返回的元素。
答案 0 :(得分:3)
如果您想从随机选择的列表中删除某些内容,则不需要拥有变量名称。 列表对象本身将执行。
换句话说,只需从random.choice()
为您提供的结果中删除所选的数字:
picked_list = random.choice(d)
picked = random.choice(picked_list)
picked_list.remove(picked)
如果您必须拥有某种名称,请不要为输入列表使用单独的变量。使用字典:
lists = {
'a': [1, 2, 3],
'b': [1, 2, 3],
'c': [1, 2, 3],
}
list_picked = random.choice(lists) # returns 'a', 'b', or 'c'
picked = random.choice(lists[list_picked])
lists[list_picked].remove(picked)
请注意,只需预先自动调整列表(按随机顺序排列),然后根据需要弹出元素,效率更高:
d = [a, b, c]
for sublist in d:
random.shuffle(sublist)
# later on
picked = random.choice(d).pop() # remove the last element
你必须弄清楚那里有一个空列表意味着什么。