2017-06-04 180 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)。 :-) –