2014-04-08 203 views
-1

我剛剛學會了如何從list中刪除某些東西。從列表中刪除元素,但範圍已更改?

rando = keywords[random.randint(0, 14)] 
h = 0 
for h in range(len(keywords)): 
    if rando == keywords[h]: 
     position = h 

realAns = definitions[position] 
del keywords [h] 

然而,如我使用的是while循環中,代碼的一部分不斷重複,並且如我已刪去的元素改變的範圍,回溯發生錯誤說,它是超出範圍。我該如何解決? 謝謝:)

+0

請出示'while'循環。 – merlin2011

+0

也許這將有助於:http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python – Praveen

回答

0

該代碼看起來不錯,可能你沒有定義列表中的'關鍵字'列表中有14個條目。

當您嘗試訪問未定義列表的一部分時,會出現'列表超出範圍'錯誤。 例如,參見下面的代碼

list_of_rollnumbers = [11,24,31,57,42,99,132] 
print list_of_rollnumbers[7] 
print list_of_rollnumbers[9] #both these would give list index out of range error 
print list_of_rollnumbers[5] #this would print 99 
0

幹嘛還要做這個循環?據我瞭解,你選擇隨機索引的項目,然後通過整個列表查找找到該項目,所以你可以找到它的索引。只要做到:

position = random.randrange(len(keywords)) 
rando = keywords[position] 
realAns = definitions[position] 

或者,更簡單:

rando, realAns = random.choice(list(zip(keywords, definitions)))