2017-09-03 104 views
-1

我有以下列表:存儲索引引用(從文件讀入)。使用索引而不是值來搜索時從列表中刪除重複

easy_answers=[row[ca],row[1],row[2],row[3],row[4]] 

值的示例:

row[ca] = 1 #this is a flag that points to the right response, in this case row1 which is a 
row[1] = a 
row[2] = b 
row[3] = c 
and so on 

所有我想要做的就是簡單檢查清單,看看是否任何持有列表元素的索引是相同的(重複),如果因此,刪除重複指數(但在行[CA]值離開,因爲這是正確答案)

在上面的例子中,預期輸出將是:

easy_answers=[row[ca],row[1],row[2],row[3],row[4]] 
#we know from the values that row[ca] = 1 and row[1] =1, so remove row[1] 

..所以最後的結果將是:

easy_answers=[row[ca],row[2],row[3],row[4]] 

代碼

只值打交道時,從列表中刪除重複的簡單,但我怎麼改下面的代碼來搜索由索引號碼所保存的值以實現相同的目的?

ca=int(row[5]) #this is the right resopnse for the question 
       easy_answers=[row[ca],row[1],row[2],row[3],row[4]] 

      if row[ca] in easy_answers: 

        easy_answers.remove(row[ca]) 

回答

1

而不是增加,然後重複數據刪除,你可能會更好刪除正確的答案,然後再重新添加它。

import random 

correct_answer = 2 
num_choices = 3 
possibles = [1, 2, 3, 4] 
# 
if len(possibles) != num_choices: 
    possibles.remove(correct_answer) 
    random.shuffle(possibles) 
    possibles = possibles[:num_choices - 1] 
    possibles.append(correct_answer) 
random.shuffle(possibles)