In questo tutorial, scopriremo due modi pitonici per trovare la differenza tra due liste. Uno dei metodi è usare il Python Set. Prima converte le liste in insiemi e poi ne ricava la parte unica.
Altri metodi non basati su insiemi confrontano due liste elemento per elemento e raccolgono quelli unici. Possiamo implementarli usando cicli for annidati e con la comprensione delle liste.
A proposito, se non siete a conoscenza degli insiemi in Python, allora seguite il seguente tutorial. Vi introdurrà rapidamente a come Python implementa la forma matematica di Set.
Python Set
Modi pitonici per trovare la differenza tra due liste
Python Set sembra essere la scelta più ovvia per identificare il comune e la differenza di due liste. Quindi, lo esploreremo prima e poi useremo i loop annidati e la comprensione delle liste.
Prima di passare alla parte della soluzione, definiamo i parametri del test, cioè le due liste di cui dobbiamo trovare la differenza.
# Test Inputlist_a = list_b =
E vogliamo che la nostra soluzione fornisca il seguente output:
# Expected Result# list_out = list_a - list_blist_out =
Iniziamo a creare un programma per trovare la differenza tra due liste, prima usando gli insiemi.
Utilizziamo set() per trovare la differenza di due liste
In questo approccio, prima deriveremo due SET (diciamo set1 e set2) dalle Liste (diciamo list1 e list2) passandole alla funzione set(). Dopo di che, eseguiremo l’operazione di differenza dei set. Restituirà quegli elementi della lista1 che non esistono nella seconda.
Ecco il programma Python di esempio per ottenere la differenza di due liste.
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Dopo aver eseguito questo, dovreste vedere il seguente risultato:
Senza set(), usando i loop annidati
In questo metodo, useremo i For Loop annidati per confrontare ogni elemento della prima lista con la seconda. E durante l’attraversamento, aggiungeremo ogni elemento non corrispondente ad una nuova lista (vuota).
La nuova lista includerà infine la differenza tra le due sequenze date. Di seguito è riportato il programma di esempio per dimostrare questo approccio.
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Dopo aver eseguito il programma di cui sopra, dovreste vedere il seguente risultato:
Senza set(), usando la comprensione della lista
È quasi una tecnica simile a quella che abbiamo usato nella precedente. Qui, abbiamo sostituito i cicli annidati con la sintassi di comprensione della lista.
Vedi l’esempio qui sotto.
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Dopo aver eseguito il programma sopra, dovresti vedere il seguente risultato: