Python列表随机选择
在此寻找帮助/解决方案。Python列表随机选择
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
这个随机函数?我如何使用或索引函数的语法是什么?对于我的程序,我必须弹出随机选择返回的元素。
如果您想从随机选择的列表中删除某些内容,则不需要具有变量名称。 列表对象本身将会做。
换句话说,单纯从结果中删除选定的数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
尽管如此,你必须弄清楚这里有一个空的列表意味着什么。
非常感谢。这绝对符合我的编码标准。 – Kuladip
@Kuladip:很高兴能有帮助!如果您觉得它对您有用,请随时[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 :-) –
所以只需从'random.choice()'给你的列表对象直接弹出。您不需要变量名称,只需要列表对象本身。 –