Ottieni la differenza tra due elenchi in Python

Lakshay Kapoor 30 gennaio 2023
  1. Usa set.difference() per trovare la differenza tra due elenchi in Python
  2. Usa set.symmetric_difference() per trovare la differenza tra due elenchi in Python
  3. Usa la parola chiave in per trovare la differenza tra le due liste in Python
  4. Usa la libreria NumPy per trovare la differenza tra due elenchi in Python
Ottieni la differenza tra due elenchi in Python

Esistono molte operazioni eseguite su strutture di dati come elenchi, dizionari, tuple e array. In Python, queste strutture di dati sono utilizzate in quasi tutti i programmi. Una di queste strutture dati sono le liste in Python. Gli elenchi nella programmazione Python aiutano a memorizzare più di un elemento in una sola variabile. Scoprire la differenza tra due elenchi è un compito molto comune che svolge quasi tutti i programmatori.

Questo tutorial dimostrerà diversi modi per ottenere la differenza tra due elenchi in Python.

Usa set.difference() per trovare la differenza tra due elenchi in Python

Il metodo set() aiuta l’utente a convertire qualsiasi iterabile in una sequenza iterabile, chiamata anche set. Gli iterabili possono essere una lista, un dizionario o una tupla.

La funzione set.difference() viene utilizzata per restituire la differenza tra i due insiemi. Questa funzione elimina sostanzialmente gli elementi comuni in due insiemi.

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

difference_1 = set(list_1).difference(set(list_2))
difference_2 = set(list_2).difference(set(list_1))

list_difference = list(difference_1.union(difference_2))
print(list_difference)

Produzione:

[50, 5, 40, 25, 60, 15]

Per questo metodo, il primo passaggio consiste nel memorizzare i due elenchi in due variabili. La funzione set() viene utilizzata per convertire queste liste in insiemi. Nello stesso passaggio, viene utilizzata la funzione set.difference() per trovare la differenza tra i due insiemi. Nota che la variabile difference_1 ottiene gli elementi in list_1 e non in list_2.

La variabile difference_2 ottiene gli elementi che sono in list_2 e non in list_1. Successivamente, la funzione union viene utilizzata per ottenere tutti gli elementi dalle variabili difference_1 e difference_2. Inoltre, la funzione list() viene utilizzata per convertire nuovamente entrambi gli insiemi in elenchi. Infine, viene stampato la lista risultante.

Usa set.symmetric_difference() per trovare la differenza tra due elenchi in Python

Qui, il metodo set() viene utilizzato per convertire inizialmente entrambe le liste in insiemi.

Il metodo symmetric_difference() viene utilizzato per restituire gli elementi che si trovano nel primo set o nel secondo set. Questo metodo non restituisce l’intersezione come gli elementi comuni dei due insiemi.

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

set_difference = set(list_1).symmetric_difference(set(list_2))
list_difference = list(set_difference)

print(list_difference)

Produzione:

[5, 40, 15, 50, 25, 60]

Il metodo set() viene utilizzato anche per convertire le liste in insiemi. Dopo aver ottenuto la differenza, la funzione list() viene utilizzata per ottenere e convertire il set finale, come convertire nuovamente set_difference in una lista.

Usa la parola chiave in per trovare la differenza tra le due liste in Python

La parola chiave in aiuta a verificare se un elemento è presente o meno in una sequenza iterabile come una lista.

In questo metodo viene utilizzata anche la funzione append(). append() è usato per aggiungere elementi a una lista esistente; non crea una nuova lista, ma modifica la lista iniziale aggiungendovi elementi.

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = []
for element in list_1:
    if element not in list_2:
        list_difference.append(element)

print(list_difference)

Produzione:

[5, 15, 25]

In questo metodo, inizializziamo prima la lista finale che deve essere stampata con zero elementi. Quindi usiamo un bucle for per iniziare l’iterazione con la prima lista, che è list_1. Successivamente, utilizziamo la parola chiave not in per verificare se un elemento è nella seconda lista o meno.

Infine, usiamo il metodo append() per aggiungere gli elementi che non sono nella seconda lista alla lista iniziale, cioè list_difference . Lo svantaggio di questo metodo, tuttavia, è che non restituisce gli elementi del secondo elenco.

Per rendere questo metodo più semplice, usa la comprensione delle liste. La comprensione delle liste è un metodo che aiuta a creare un nuovo elenco con gli elementi di un elenco esistente.

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = [element for element in list_1 if element not in list_2]

print(list_difference)

Produzione:

[5, 15, 25]

Usa la libreria NumPy per trovare la differenza tra due elenchi in Python

La libreria NumPy di Python è una libreria molto usata. Questa libreria aiuta l’utente a svolgere attività in array, matrici e algebra lineare.

In questo metodo, vengono utilizzate tre funzioni della libreria NumPy per ottenere la differenza tra due elenchi. Queste tre funzioni sono np.array(), np.setdiff1d() e np.concatenate().

Un array è la struttura dati primaria della libreria NumPy. La funzione np.array() ti aiuta a creare un array e ti aiuta a lavorare con loro.

La funzione np.setdiff1d() ti aiuta a trovare la differenza impostata tra due array e a restituire i valori che si trovano nel primo array e non nel secondo array.

La funzione np.concatenate viene utilizzata per combinare due o più array NumPy insieme. Controlla l’esempio qui sotto:

import numpy as np

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

array_1 = np.array(list_1)
array_2 = np.array(list_2)

difference_1 = np.setdiff1d(array_1, array_2)
difference_2 = np.setdiff1d(array_2, array_1)

list_difference = np.concatenate((difference_1, difference_2))
print(list(list_difference))

Produzione:

[5, 15, 25, 40, 50, 60]
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

Articolo correlato - Python List