Esegui la sottrazione dalla lista in Python

Rayven Esplanada 18 luglio 2021
  1. Converti lista in set per eseguire la sottrazione dalla lista in Python
  2. Usa la comprensione della lista per ottenere la differenza della lista in Python
Esegui la sottrazione dalla lista in Python

Questo tutorial mostra come eseguire la sottrazione della lista, o in altre parole, lista meno lista in Python.

Come definito dalla teoria degli insiemi in matematica, la differenza di due insiemi si riferisce agli elementi di un insieme che non esistono nell’altro insieme.

Ad esempio, se dichiariamo questi due liste:

list1 = [1, 2, 4]
list2 = [2, 3]

La differenza di list1 - list2 sarebbe [1, 4], mentre list2 - list1 sarebbe [3].

Converti lista in set per eseguire la sottrazione dalla lista in Python

Le operazioni di teoria degli insiemi sono supportate in Python. Tuttavia, solo il tipo di dati set supporta queste operazioni. Pertanto, per utilizzare l’operazione set, le liste devono essere convertite in set. Ciò è possibile avvolgendo una lista attorno alla funzione set().

Nota: la conversione di una lista in un set rimuoverà qualsiasi tipo di ordine e rimuoverà i valori duplicati dall’lista.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

print("A - B = ", setA - setB)

Produzione:

A - B =  {1, 4, 9, 14}

Il risultato restituisce la differenza tra i due set e rimuove i valori duplicati.

Possiamo usare la funzione list() per convertire il risultato da un set a una lista.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

list_diff = list(setA - setB)

print("A - B: ", list_diff)

Produzione:

A - B: [1, 4, 9, 14]

Usa la comprensione della lista per ottenere la differenza della lista in Python

La comprensione dell’lista può essere utilizzata per verificare se un elemento esiste solo nel primo lista ma non esiste nel secondo lista. Questa soluzione consente di eseguire l’operazione di differenza senza convertire l’lista in un set.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]

listSub = [elem for elem in listA if elem not in listB]

print("A - B =", listSub)

Produzione:

A - B = [1, 4, 9, 14, 14]

Questa soluzione non altera l’ordine dell’lista e rimuove i duplicati.

Tuttavia, il valore 11 viene ripetuto due volte in listA, ed entrambe le iterazioni di 11 vengono rimosse dal risultato di A - B poiché 11 esiste in entrambi gli insiemi. Questo comportamento è come previsto.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Articolo correlato - Python List