Elenca intersezioni in Python

Muhammad Maisam Abbas 30 gennaio 2023
  1. Ottieni l’intersezione della lista in Python con l’operatore &
  2. Ottieni l’intersezione della lista in Python con il metodo intersection()
Elenca intersezioni in Python

In questo tutorial, discuteremo diversi metodi per ottenere l’intersezione tra due liste in Python.

L’intersezione (o AND) è fondamentalmente un’operazione progettata specificatamente per sets. Funziona selezionando gli elementi comuni in due set. Ad esempio,

setA = {1, 2, 3, 4, 5}
setB = {0, 2, 4, 6}

print(setA & setB)

Produzione:

{2, 4}

Nell’esempio precedente, setA e setB sono due insiemi e l’operatore & esegue l’operazione di intersezione sugli insiemi.

Per impostazione predefinita, Python non supporta l’esecuzione di intersezioni dirette sugli liste. Ma con un piccolo ritocco, possiamo eseguire l’intersezione anche sugli liste.

Ottieni l’intersezione della lista in Python con l’operatore &

L’operatore &, come discusso sopra, non può essere utilizzato con gli liste. Quindi, dobbiamo cambiare le nostre liste in insiemi usando il metodo set().

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set1 & set2
list3 = list(set3)

print(list3)

Produzione:

[2, 4]

La funzione set() converte una lista in un set. L’operazione & restituisce un insieme che contiene tutti gli elementi comuni in entrambi gli insiemi. Come sappiamo, dobbiamo eseguire questa operazione sulle liste piuttosto che sugli insiemi. Quindi, dobbiamo convertire questo set in una lista usando la funzione list().

Ottieni l’intersezione della lista in Python con il metodo intersection()

Il metodo intersection() della classe set è un altro modo per eseguire l’intersezione sugli insiemi in Python. Simile all’operatore &, è anche limitato ai soli insiemi. Ma convertendo la list1 in un insieme, possiamo anche usare intersection() con list1.

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set(list1).intersection(list2)
list3 = list(set3)

print(list3)

Produzione:

[2, 4]

Il metodo intersection() restituisce anche un insieme di tutti gli elementi comuni. Quindi, dobbiamo convertirlo in una lista usando la funzione list().

Ottieni l’intersezione della lista in Python con le comprensioni della lista

Entrambi i metodi discussi sopra sono progettati per funzionare con insiemi piuttosto che con liste. Poiché tutti sappiamo che un insieme non può avere valori ricorrenti e i suoi elementi non sono ordinati, queste funzioni non funzionano bene se abbiamo valori ricorrenti nei nostri liste o se vogliamo mantenere l’ordine nei nostri liste.

Gli svantaggi dei due metodi precedenti sono illustrati in questo esempio di codifica.

list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]

setintersection = list(set(list1) & set(list2))
intersectionmethod = list(set(list1).intersection(list2))

print("The result of set intersection :")
print(setintersection)
print("The result of intersection() method :")
print(intersectionmethod)

Produzione:

The result of set intersection :
[2, 4]
The result of intersection() method :
[2, 4]

Come mostrato sopra, ci aspettiamo [2, 2, 4] come risultato corretto ma otteniamo solo [2, 4].

La comprensione delle liste è un altro modo di eseguire l’operazione AND sulle liste in Python. Può gestire valori ricorrenti e anche mantenere l’ordine degli elementi, che non viene mantenuto nei due metodi precedenti.

# Solution 2 Using list comprehensions
list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]
list3 = [x for x in list1 if x in list2]
# all the x values that are in A, if the X value is in B
print(list3)

Produzione:

[2, 2, 4]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Articolo correlato - Python List