2017-05-14 3 views
3

Was ich möchte: Wenn zwei Listen (Liste a und Liste b) gegeben, entfernen Sie die Nummern in Liste a, die in Liste b sind.Subtrahieren einer Liste von einer anderen in Python

Momentan passiert: Meine erste Funktion funktioniert nur, wenn in der Liste a nur eine Nummer entfernt werden soll.

Was ich versucht habe: die Listen in Sätze Drehen, dann ein Subtrahieren - b

def array_diff(a, b): 
    c = list(set(a) - set(b)) 
    return c 

auch versucht: Drehen Sie die Liste in Sätze, sucht n in a und m in b , dann wenn n = m, um n zu entfernen.

def array_diff(a, b): 
    list(set(a)) 
    list(set(b)) 
    for n in (a): 
    for m in (b): 
     if n == m: 
     n.remove() 

     return a 

Möglicherweise dachten an: Mit der „nicht in“ Funktion, um zu bestimmen, ob etwas in b ist oder nicht.

Probe Input/Output:

INPUT: array_diff ([1,2], [1]) OUTPUT: [2]

INPUT: array_diff ([1,2,2], [1]) OUTPUT: [2] (Dies sollte sein, kommt aus [2,2]

+1

kann du nicht einfach Schleife über 1 Liste und aus dem entfernen andere? – Carcigenicate

+0

Schauen Sie sich die Dupl icate. Letztendlich ändern Sie einfach die Bedingung, die Sie für Ihren Listenvergleich wollen. Es gibt jedoch einige Beispiele dafür, was Sie in StackOverflow versuchen möchten. – idjaw

Antwort

3

verwenden Sie es einfach so:

c = [x for x in a if x not in b] 
Verwandte Themen