logo

Python | Intersecció de dues llistes

La intersecció de dues llistes significa que hem d'agafar tots aquells elements comuns a les dues llistes inicials i emmagatzemar-los en una altra llista. Ara hi ha diverses maneres a Python, a través de les quals podem realitzar la intersecció de les llistes.
Exemples:

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]>

Mètode 1:
Aquest és el mètode més senzill on no hem utilitzat cap funció integrada.



Python 3




visualitzador java



# 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))>



>

>

Sortida:

[9, 11, 26, 28]>

Mètode 2:
Aquest mètode inclou l'ús de mètode set(). .

Python 3




# 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))>

>

>

Sortida:

[9, 10, 4, 5]>

La complexitat temporal del programa anterior és O(n), on n és la longitud de la llista més llarga entre lst1 i lst2.

La complexitat espacial del programa és O(n), on n és la longitud de la llista més petita entre lst1 i lst2.

Mètode 3:
En aquest mètode nosaltres set() la llista més gran i després utilitzeu la funció integrada anomenada intersecció () per calcular la llista intersecada. intersecció () és una part de primer nivell del conjunt.

Python 3




# 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))>

>

>

Sortida:

{9, 11}>

Mètode 4:
Amb l'ús d'aquesta mètode híbrid la complexitat del programa recau en O(n). Aquesta és una manera eficient de fer el programa següent.

Python 3




# 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))>

>

>

Sortida:

[9, 9, 11]>

Mètode 5:
Aquí és on es realitza la intersecció sobre subllistes dins d'altres llistes. Aquí hem utilitzat el concepte de filtre().

Python 3




# 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))>

>

>

Treball: La part de filtre agafa l'element de cada subllista i comprova si es troba a la llista font. La comprensió de la llista s'executa per a cada subllista de la llista2.
Sortida:

[[13, 32], [7, 13, 28], [1, 6]]>

Mètode 6: utilitzant reduce():
Algorisme:

  1. Importeu la funció de reducció del mòdul functools.
  2. Definiu dues llistes.
  3. Inicialitzar la intersecció de variables amb una llista buida.
  4. Utilitzeu la funció reduce per iterar sobre els elements de lst1.
  5. Dins de la funció lambda, comproveu si l'element actual està present a lst2 i no ja està present a la llista d'intersecció.
  6. Si és així, afegiu l'element actual a la llista d'intersecció.
  7. Retorna la llista d'interseccions.
  8. Imprimeix la llista d'interseccions.

Python 3




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.>

>

>

Sortida

[9, 10, 5, 4]>

Complexitat temporal: O(n^2), on n és la longitud de lst1.
Complexitat espacial: O(n), on n és la longitud de lst1.