logo

Python | Snijpunt van twee lijsten

Het kruisen van twee lijsten betekent dat we al die elementen die gemeenschappelijk zijn voor beide initiƫle lijsten moeten nemen en deze in een andere lijst moeten opslaan. Nu zijn er verschillende manieren in Python waarmee we het snijpunt van de lijsten kunnen uitvoeren.
Voorbeelden:

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

Methode 1:
Dit is de eenvoudigste methode waarbij we geen ingebouwde functies hebben gebruikt.



Python3




apache



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



>

>

Uitgang:

[9, 11, 26, 28]>

Methode 2:
Deze methode omvat het gebruik van set() methode .

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

>

>

Uitgang:

[9, 10, 4, 5]>

De tijdscomplexiteit van het bovenstaande programma is O(n), waarbij n de lengte is van de langere lijst tussen lst1 en lst2.

De ruimtecomplexiteit van het programma is O(n), waarbij n de lengte is van de kleinere lijst tussen lst1 en lst2.

Methode 3:
Bij deze methode wij set() de grotere lijst en gebruik vervolgens de ingebouwde functie genaamd kruispunt() om de doorsnedenlijst te berekenen. kruispunt() is een eersteklas onderdeel van de 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))>

>

>

Uitgang:

{9, 11}>

Methode 4:
Door het gebruik hiervan hybride methode de complexiteit van het programma daalt tot O(n). Dit is een efficiƫnte manier om het volgende programma uit te voeren.

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

>

>

Uitgang:

[9, 9, 11]>

Methode 5:
Dit is waar de kruising wordt uitgevoerd over sublijsten binnen andere lijsten. Hier hebben we het concept van gebruikt filter().

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

>

>

Werkend: Het filtergedeelte neemt het item van elke sublijst en controleert of het in de bronnenlijst staat. Het lijstbegrip wordt uitgevoerd voor elke sublijst in lijst2.
Uitgang:

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

Methode 6: Reduce() gebruiken:
Algoritme:

  1. Importeer de reduce-functie uit de functools-module.
  2. Definieer twee lijsten.
  3. Initialiseer het snijpunt van de variabele met een lege lijst.
  4. Gebruik de reduce-functie om de elementen van lst1 te herhalen.
  5. Controleer binnen de lambda-functie of het huidige element aanwezig is in lst2 en niet al aanwezig is in de kruispuntenlijst.
  6. Als dit het geval is, voegt u het huidige element toe aan de kruispuntenlijst.
  7. Retourneert de kruispuntenlijst.
  8. Druk de kruispuntenlijst af.

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

>

>

Uitvoer

[9, 10, 5, 4]>

Tijdcomplexiteit: O(n^2), waarbij n de lengte is van lst1.
Ruimtecomplexiteit: O(n), waarbij n de lengte is van lst1.