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.