2017-05-24 53 views
0
idx = [] 
for i in all_users: 

    self.query(*i) 
    if self.query(*i) == True: 
     print("yes") 
    else: 
     print("No") 
     rem = all_users.index(i) 
     idx.append(rem) 

print(list(idx)) 

所以這個工作,但問題是當在all_users中有一個重複的值,並且self.query爲false時,它插入值的第一個索引。如何在列表中插入重複索引

e.g, all_users = [[2,5,7,9,4], [17,18], [4], [17,18], [5]] 
idx = [1,2,1] 

idx = [1,2,3] #correct 

所以,如果我有ALL_USERS一個空列表,並且我不想把它傳遞給查詢功能,我如何追加,在IDX? #edited

+1

什麼'self.query(* I)'做什麼?你試圖完成什麼*,從代碼中不清楚,事實上,你的代碼中包含了很多我們不知道的東西。如果您需要幫助,您需要提供可重複的示例。理想情況下,一個明確的問題陳述。 –

+0

我懷疑你的問題來自於使用'rem = all_users.index(i)',它會*總是給你第一個匹配的索引*。相反,你使用'enumerate'循環遍歷索引*和元素*,如下所示:'for i,e in enumerate(all_users):do_stuff_with_index(i); do_stuff_with_element(e)' –

+0

它返回一個布爾值,如果它返回false,對於all_user中的列表,應該插入列表的索引。 –

回答

0

我建議你在all_users長度的rangeloop所以你保持index跟蹤,如:

idx = [] 
for i in range(len(all_users)): 

    self.query(*all_users[i]) 
    if self.query(*all_users[i]) == True: 
     print("yes") 
    else: 
     print("No") 
     idx.append(i) 

print(list(idx)) 
+0

你應該只使用'enumerate'。 –

+0

此外,它被標記爲Python 3,所以這會拋出一個'NameError',因爲'xrange'不會被定義。你只需要'範圍',但是,你真的想要枚舉*。 –

+0

因此,如果我在all_users中有一個空列表,並且我不想將它傳遞給查詢函數,那麼我如何在idx中追加該列表? –