Python列表随机选择

时间:2017-06-04 14:55:53

标签: python random

在此寻找帮助/解决方案。

a = [1,2,3]
b = [1,2,3]
c = [1,2,3]
d = [a,b,c]

random.choice(random.choice(d))

这给了我1,2或3.但是如何找到这个随机函数使用的列表变量abc?我该如何使用或者索引函数的语法是什么?对于我的程序,我必须弹出随机选择返回的元素。

1 个答案:

答案 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

你必须弄清楚那里有一个列表意味着什么。