logo

Python | Intersecția a două liste

Intersecția a două liste înseamnă că trebuie să luăm toate acele elemente care sunt comune ambelor liste inițiale și să le stocăm într-o altă listă. Acum există diverse moduri în Python, prin care putem efectua Intersecția listelor.
Exemple:

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

Metoda 1:
Aceasta este cea mai simplă metodă în care nu am folosit nicio funcție încorporată.



Python3




cizmă de primăvară



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



>

>

Ieșire:

[9, 11, 26, 28]>

Metoda 2:
Această metodă include utilizarea de metoda 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))>

>

>

Ieșire:

[9, 10, 4, 5]>

Complexitatea de timp a programului de mai sus este O(n), unde n este lungimea listei mai lungi între lst1 și lst2.

Complexitatea spațială a programului este O(n), unde n este lungimea listei mai mici între lst1 și lst2.

Metoda 3:
În această metodă noi set() lista mai mare și apoi utilizați funcția încorporată numită intersecție() pentru a calcula lista intersectată. intersecție() este o parte de primă clasă a setului.

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

>

>

Ieșire:

{9, 11}>

Metoda 4:
Prin folosirea acestuia metoda hibridă complexitatea programului cade la O(n). Acesta este un mod eficient de a face următorul program.

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

>

>

Ieșire:

[9, 9, 11]>

Metoda 5:
Acesta este locul în care se realizează intersecția peste sub-liste din alte liste. Aici am folosit conceptul de filtru().

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

>

>

Lucru: Partea de filtrare preia fiecare articol din sublistă și verifică dacă se află în lista sursă. Înțelegerea listei este executată pentru fiecare sublistă din list2.
Ieșire:

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

Metoda 6: Folosind reduce():
Algoritm:

  1. Importați funcția reduce din modulul functools.
  2. Definiți două liste.
  3. Inițializați intersecția variabilei cu o listă goală.
  4. Utilizați funcția reduce pentru a itera elementele lui lst1.
  5. În interiorul funcției lambda, verificați dacă elementul curent este prezent în lst2 și nu este deja prezent în lista de intersecții.
  6. Dacă este, atunci adăugați elementul curent la lista de intersecții.
  7. Întoarceți lista de intersecții.
  8. Tipăriți lista de intersecții.

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

>

>

Ieșire

[9, 10, 5, 4]>

Complexitatea timpului: O(n^2), unde n este lungimea lui lst1.
Complexitatea spațiului: O(n), unde n este lungimea lui lst1.