Programma Python per calcolare la differenza simmetrica tra due elenchi
In Python, più elementi possono essere mantenuti in una singola variabile utilizzando gli elenchi. Uno dei quattro tipi di dati incorporati in Python per l'archiviazione di raccolte di dati è l'elenco; gli altri tre sono tupla, set e dizionario, ognuno dei quali ha uno scopo unico.
Cos'è la Lista?
Le parentesi quadre vengono utilizzate per creare elenchi. Lo strumento più efficace in Python è l'elenco perché non deve necessariamente essere omogeneo. I tipi di dati come numeri interi, stringhe e oggetti possono essere trovati tutti in un unico elenco. Poiché gli elenchi sono modificabili, è possibile apportarvi modifiche anche dopo la loro creazione.
Differenza simmetrica in una lista
L'insieme degli elementi presenti in LISTA1 o LISTA2 ma non in entrambi costituisce la differenza simmetrica tra le due liste LISTA1 e LISTA2.
Esistono vari modi per calcolare la differenza simmetrica tra due elenchi in Python, utilizzeremo i modi più efficienti per trovare la stessa.
Abbiamo convertito l'elenco negli insiemi e quindi abbiamo calcolato la differenza simmetrica tra tali insiemi.
Algoritmo
-
Crea elenchi
Converti elenchi da impostare
Stampa la differenza simmetrica dell'insieme convertito
Stampa la differenza simmetrica della lista
Esempio
Nel seguente programma utilizzando “in” possiamo trovare la differenza tra le due liste. La parola chiave in svolge due funzioni.
Per determinare se un valore è presente in una stringa, elenco, tupla, intervallo, ecc.
Per scorrere ripetutamente un elenco nel ciclo for.
L_1 = [11, 12, 13]
L_2 = [12, 13, 42]
L_3 = [3, 42, 5]
# converting lists to set
set_1 = set(L_1)
set_2 = set(L_2)
# now print the symmetric difference when
# when the converted set is passed as a parameter
print(set_1.symmetric_difference(set_2))
# now print the symmetric difference when list is
# passed as a parameter by converting it to a set
print(set_2.symmetric_difference(L_3))
Produzione
{42, 11}
{13, 3, 12, 5}
Esempio
Qui abbiamo creato due elenchi, quindi creato una variabile temporanea vuota. Quindi abbiamo utilizzato il ciclo for per scorrere i numeri dell'elenco. L'istruzione Se controlla se i numeri sono comuni e quindi gli elementi vengono aggiunti alla prima variabile temporanea creata. Successivamente viene stampato l'elenco con i diversi elementi.
list_1 = [1, 35, 20, 25, 70, 35, 80]
list_2 = [25, 80, 35]
temp_3 = []
for element in list_1:
if element not in list_2:
temp_3.append(element)
print(temp_3)
Produzione
[1, 20, 70]
Utilizzo della comprensione delle liste
In questo approccio, trasformiamo esplicitamente gli elenchi in insiemi e quindi utilizziamo l'operatore di sottrazione per rimuoverne solo uno dall'altro. Vai a Sets in Python per altri riferimenti ai set. È una strategia simile a quella che abbiamo utilizzato in precedenza. Come unica differenza è stata utilizzata la sintassi di comprensione delle liste al posto dei cicli nidificati.
Esempio
Il seguente programma confronta due elenchi, lista_1 e lista_2. Crea un set dal secondo elenco e quindi lo utilizza per filtrare eventuali valori visualizzati in entrambi gli elenchi. Il risultato è una nuova lista filtrata (temp_3) che contiene solo gli elementi di list_1 che non sono presenti in SET_1 (list_2).
list_1 = [13, 15, 22, 25, 30, 54, 40]
list_2 = [54, 45, 30, 13]
SET_1 = set(list_2)
temp_3 = [x for x in list_1 if x not in SET_1]
print(temp_3)
Produzione
[15, 22, 25, 40]
Senza l'uso di set()
In questo metodo, gli elementi vengono copiati da entrambi gli elenchi utilizzando la tecnica della combinazione fondamentale mentre vengono periodicamente controllati per vedere se sono presenti nell'altro elenco.
Esempio
Nel seguente programma definiamo una funzione chiamata Differenza che accetta due liste come parametri. La funzione crea una nuova lista, list_dif, che contiene gli elementi di entrambe le liste originali che non sono presenti in entrambe. Quindi stampa questo nuovo elenco con la differenza tra i due elenchi originali. In questo esempio viene stampato [1, 12, 25, 22, 30, 20].
# this method helps to get difference of two lists
# by not using set()
def Difference(list1, list2):
list_dif = [i for i in list_1 + list_2 if i not in list_1 or i not in list_2]
return list_dif
list_1 = [1, 12, 25, 22, 30, 65, 70]
list_2 = [65, 20, 70]
list_3 = Difference(list_1, list_2)
print(list_3)
Produzione
[1, 12, 25, 22, 30, 20]
Utilizzo della differenza simmetrica
Il metodo simmetrico difference() restituisce gli elementi che si trovano nel primo o nel secondo set. Questo metodo non restituisce l'intersezione, a differenza degli elementi condivisi dei due insiemi.
Esempio
list_1 = [23, 18, 45, 25, 40, 23, 40]
list_2 = [23, 40, 35]
set_difference = set(list_1).symmetric_difference(set(list_2))
temp_3 = list(set_difference)
print(temp_3)
Produzione
[35, 45, 18, 25]
Conclusione
In questo articolo, abbiamo utilizzato quattro modi diversi per calcolare la differenza simmetrica tra due elenchi tramite Python. Ciascun metodo presenta una certa unicità e un modo diverso di gestire l'attività.