2017-11-23 24 views
0

Ich bin nicht sicher, warum ich einen Fehler erhalte, der Index außerhalb des Bereichs sagt, wenn ich diese Funktion teste. Kann mir bitte jemand helfen, das zu beheben?Entfernen von Objekten aus Listen

def intersect_lists(L1, L2): 
'''(list, list) -> list 
Return L1 with items not in L2 removed. 
>>> intersect_lists([1, 2, 3, 4, 5, 6], [4, 2, 6]) 
[2,4,6] 
''' 
new_list = [] 

for item in range(len(L1)): 
    if L1[item] == L2[item]: 
     new_list.append(L1[item]) 
return new_list 
+1

zeigen die vollständige Fehlermeldung. –

+1

verwenden Sie "len (L1)" als Bereichsparameter. Sie müssen 1 davon abziehen. Ein Array beginnt bei Index 0, also hat [1,2] die Indizes 0 und 1, aber die Länge ist 2 – Markus

Antwort

3

Verwenden Liste Verständnis:

def intersect_lists(L1, L2): 
    return [i for i in L1 if i in L2] 

ist jedoch spezifische Fehler durch die Tatsache verursacht wird, dass Sie über die Länge L1 iterieren, die wegen der Länge zu einem Indexfehler führen letztlich von L1 ist größer als L2.

Ohne Liste Verständnis:

def intersect_lists(L1, L2): 
    final_list = [] 
    for i in L1: 
     if i in L2: 
     final_list.append(i) 

    return final_list 
+0

Wie kann ich es ohne Listenverständnis tun? – bigd

+0

@bigd siehe meine letzte Änderung. – Ajax1234

1

Oder Boolesche Und:

list(set(L1) & set(L2)) 
Verwandte Themen