2017-06-04 182 views
0

在此寻找帮助/解决方案。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。但如何找到这些列表变量用于出abc这个随机函数?我如何使用或索引函数的语法是什么?对于我的程序,我必须弹出随机选择返回的元素。

+0

所以只需从'random.choice()'给你的列表对象直接弹出。您不需要变量名称,只需要列表对象本身。 –

回答

2

如果您想从随机选择的列表中删除某些内容,则不需要具有变量名称。 列表对象本身将会做

换句话说,单纯从结果中删除选定的数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 

尽管如此,你必须弄清楚这里有一个空的列表意味着什么。

+0

非常感谢。这绝对符合我的编码标准。 – Kuladip

+0

@Kuladip:很高兴能有帮助!如果您觉得它对您有用,请随时[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 :-) –