2016-03-15 129 views
-2

代碼應該做的是將兩個整數列表(列表a和列表b)作爲輸入並返回第二個列表(列表b)的子集,它們是以第一個列表(列表a)中的一個整數爲單位。到目前爲止,我有這樣的:將一個列表與另一個列表進行比較並創建一個子集列表

def omssa(a,b): 
new=[] 
for x in b: 
    boolean=True 
    while(boolean==True): 
     for char1 in a: 
      if(b[x]== a[char1]): 
       new.append(b[x]) 
       boolean=False 
      elif(b[x]==(a[char1]+1)): 
       new.append(b[x]) 
       boolean=False 
      elif(b[x]==(a[char1]-1)): 
       new.append(b[x]) 
       boolean=False 
     boolean=False 
return new 

但是我在第7行得到一個列表索引超出範圍的錯誤:如果(B [X] == A [CHAR1]): 有沒有一種方法來檢查作爲指數法這個函數繼續?謝謝!

回答

0

當您編寫for char1 in a時,char1是列表中的實際值,而不是索引。所以你不能使用a[char1]。參見enumerate(),或者可能重複使用range()

0

如果您的列表中不包含相同的int多個時間,則應該使用set對象而不是list。如:

def omssa(a,b): 
    b2 = set(b) 
    return b2.intersect(a) 
相關問題