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:
- Importeu la funció de reducció del mòdul functools.
- Definiu dues llistes.
- Inicialitzar la intersecció de variables amb una llista buida.
- Utilitzeu la funció reduce per iterar sobre els elements de lst1.
- Dins de la funció lambda, comproveu si l'element actual està present a lst2 i no ja està present a la llista d'intersecció.
- Si és així, afegiu l'element actual a la llista d'intersecció.
- Retorna la llista d'interseccions.
- 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.