2012-02-10 113 views
0

我需要檢查列表列表中是否存在列表。我面臨的問題是,我的名單是由類的對象,所以我不能夠做到這一點使用正常 「在list_of_lists如果名單」的方法檢查python列表中是否存在列表

我的代碼的相關部分如下

for ind in feasible_pop_comp: 
    for other in feasible_pop_comp: 
     if ind.Type!= other.Type: 
      comp=[ind,other] 
      if comp not in self.candidate.list #does not work even with .any() or .all() included 
       dombool=self.compare_typematch(ind, other) 
       if (dombool==0): 
        replace=self.check_distance(ind.point,other.point) 
        if replace: 
         if(ind<other): 
          feasible_pop_comp.remove(other) 
         else: 
          feasible_pop_comp.remove(ind) 
       else: 
        self.candidate_list.append(comp) 

我的類已經有內置的命令檢查結構相似性與其它類的對象(讀平等)

def __eq__(self, other): 
    return self.point == other.point# as all other parameters are derived from analysing the point, this equivalence is sufficient 

回溯如下:

首次
if comp not in self.candidate_list: 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

Failed ! 

它循環進入當self.candidate_list是空

正如你可能從我的unpythonic代碼注意,我是比較新的蟒蛇。 在此先感謝。

+0

「我的類已經有內置的命令檢查與其它類對象的結構相似」 < - 你寫你班上的'__eq__'方法?如果是這樣,你可以繼續使用'正常',如果列表list_of_lists「方法」 – inspectorG4dget 2012-02-10 16:47:40

+0

我似乎並沒有工作! – Sachiros 2012-02-10 16:48:32

+1

向我們展示您的'__eq__'方法和回溯。 – senderle 2012-02-10 16:49:49

回答

0

你有沒有嘗試覆蓋你的容器類的__contains__方法? 這樣你可以讓in運營商工作。

但畢竟,我真的不知道我是否確實瞭解你的問題的所有部分...

+0

這確實奏效。謝謝加載! – Sachiros 2012-02-10 17:42:53

+0

對不起新手來論壇。感謝您指出 – Sachiros 2012-02-10 17:57:24

相關問題