logo

Pitone | Intersezione di due elenchi

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:

  1. Importa la funzione di riduzione dal modulo functools.
  2. Definire due elenchi.
  3. Inizializza l'intersezione delle variabili con un elenco vuoto.
  4. Utilizzare la funzione reduce per scorrere gli elementi di lst1.
  5. All'interno della funzione lambda, controlla se l'elemento corrente è presente in lst2 e non è già presente nell'elenco delle intersezioni.
  6. Se lo è, aggiungi l'elemento corrente all'elenco delle intersezioni.
  7. Restituisce l'elenco delle intersezioni.
  8. 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.