L'intersezione di due liste significa che dobbiamo prendere tutti quegli elementi che sono comuni a entrambe le liste iniziali e memorizzarli in un'altra lista. Ora ci sono vari modi in Python, attraverso i quali possiamo eseguire l'Intersezione delle liste.
Esempi:
Input : lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9] lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87] Output : [9, 10, 4, 5] Input : lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26] Output : [9, 11, 26, 28]>
Metodo 1:
Questo è il metodo più semplice in cui non abbiamo utilizzato alcuna funzione integrata.
Python3
stati negli Stati Uniti
# Python program to illustrate the intersection> # of two lists in most simple way> def> intersection(lst1, lst2):> > lst3> => [value> for> value> in> lst1> if> value> in> lst2]> > return> lst3> # Driver Code> lst1> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 54> ,> 69> ]> lst2> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ,> 28> ,> 26> ]> print> (intersection(lst1, lst2))> |
>
>
Produzione:
[9, 11, 26, 28]>
Metodo 2:
Questo metodo prevede l'uso di metodo set() .
Python3
# Python program to illustrate the intersection> # of two lists using set() method> def> intersection(lst1, lst2):> > return> list> (> set> (lst1) &> set> (lst2))> # Driver Code> lst1> => [> 15> ,> 9> ,> 10> ,> 56> ,> 23> ,> 78> ,> 5> ,> 4> ,> 9> ]> lst2> => [> 9> ,> 4> ,> 5> ,> 36> ,> 47> ,> 26> ,> 10> ,> 45> ,> 87> ]> print> (intersection(lst1, lst2))> |
>
>
Produzione:
[9, 10, 4, 5]>
La complessità temporale del programma precedente è O(n), dove n è la lunghezza dell'elenco più lungo compreso tra lst1 e lst2.
La complessità spaziale del programma è O(n), dove n è la lunghezza della lista più piccola tra lst1 e lst2.
Metodo 3:
In questo metodo noi set() l'elenco più grande e quindi utilizzare la funzione integrata chiamata intersezione() per calcolare la lista intersecata. intersezione() è una parte di prima classe del set.
Python3
# Python program to illustrate the intersection> # of two lists using set() and intersection()> def> Intersection(lst1, lst2):> > return> set> (lst1).intersection(lst2)> > # Driver Code> lst1> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 28> ,> 26> ,> 66> ,> 91> ]> lst2> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ]> print> (Intersection(lst1, lst2))> |
>
>
Produzione:
{9, 11}>
Metodo 4:
Utilizzando questo metodo ibrido la complessità del programma cade a O(n). Questo è un modo efficace per eseguire il seguente programma.
Python3
# Python program to illustrate the intersection> # of two lists> def> intersection(lst1, lst2):> > # Use of hybrid method> > temp> => set> (lst2)> > lst3> => [value> for> value> in> lst1> if> value> in> temp]> > return> lst3> # Driver Code> lst1> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ]> lst2> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 28> ,> 26> ,> 66> ,> 91> ]> print> (intersection(lst1, lst2))> |
>
>
Produzione:
[9, 9, 11]>
Metodo 5:
Qui è dove viene eseguita l'intersezione tra sottoelenchi all'interno di altri elenchi. Qui abbiamo utilizzato il concetto di filtro().
Python3
# Python program to illustrate the intersection> # of two lists, sublists and use of filter()> def> intersection(lst1, lst2):> > lst3> => [> list> (> filter> (> lambda> x: x> in> lst1, sublist))> for> sublist> in> lst2]> > return> lst3> # Driver Code> lst1> => [> 1> ,> 6> ,> 7> ,> 10> ,> 13> ,> 28> ,> 32> ,> 41> ,> 58> ,> 63> ]> lst2> => [[> 13> ,> 17> ,> 18> ,> 21> ,> 32> ], [> 7> ,> 11> ,> 13> ,> 14> ,> 28> ], [> 1> ,> 5> ,> 6> ,> 8> ,> 15> ,> 16> ]]> print> (intersection(lst1, lst2))> |
>
>
Lavorando: La parte del filtro prende l'elemento di ciascun sottoelenco e controlla se è nell'elenco di origine. La comprensione della lista viene eseguita per ogni sottolista in list2.
Produzione:
[[13, 32], [7, 13, 28], [1, 6]]>
Metodo 6: utilizzo di reduce():
Algoritmo:
- Importa la funzione di riduzione dal modulo functools.
- Definire due elenchi.
- Inizializza l'intersezione delle variabili con un elenco vuoto.
- Utilizzare la funzione reduce per scorrere gli elementi di lst1.
- All'interno della funzione lambda, controlla se l'elemento corrente è presente in lst2 e non è già presente nell'elenco delle intersezioni.
- Se lo è, aggiungi l'elemento corrente all'elenco delle intersezioni.
- Restituisce l'elenco delle intersezioni.
- Stampa l'elenco degli incroci.
Python3
from> functools> import> reduce> lst1> => [> 15> ,> 9> ,> 10> ,> 56> ,> 23> ,> 78> ,> 5> ,> 4> ,> 9> ]> lst2> => [> 9> ,> 4> ,> 5> ,> 36> ,> 47> ,> 26> ,> 10> ,> 45> ,> 87> ]> intersection> => reduce> (> lambda> acc, x: acc> +> [x]> if> x> in> lst2> and> x> not> in> acc> else> acc, lst1, [])> print> (intersection)> #This code is contributed by Rayudu.> |
>
>Produzione
[9, 10, 5, 4]>
Complessità temporale: O(n^2), dove n è la lunghezza di lst1.
Complessità spaziale: O(n), dove n è la lunghezza di lst1.