logo

Python | Skjæringspunktet mellom to lister

Skjæringspunktet mellom to lister betyr at vi må ta alle de elementene som er felles for begge de første listene og lagre dem i en annen liste. Nå er det forskjellige måter i Python, der vi kan utføre skjæringspunktet mellom listene.
Eksempler:

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

Metode 1:
Dette er den enkleste metoden der vi ikke har brukt noen innebygde funksjoner.



Python3




innstillingsmeny android



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



>

>

Produksjon:

[9, 11, 26, 28]>

Metode 2:
Denne metoden inkluderer bruk av set() metode .

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

>

>

Produksjon:

[9, 10, 4, 5]>

Tidskompleksiteten til programmet ovenfor er O(n), der n er lengden på den lengre listen mellom lst1 og lst2.

Romkompleksiteten til programmet er O(n), der n er lengden på den mindre listen mellom lst1 og lst2.

Metode 3:
I denne metoden set() den større listen og bruk deretter den innebygde funksjonen kalt kryss() for å beregne den kryssede listen. kryss() er en førsteklasses del av settet.

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

>

>

Produksjon:

{9, 11}>

Metode 4:
Ved bruk av denne hybrid metode kompleksiteten til programmet faller til O(n). Dette er en effektiv måte å utføre følgende program på.

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

>

>

Produksjon:

[9, 9, 11]>

Metode 5:
Det er her skjæringen utføres over underlister inne i andre lister. Her har vi brukt begrepet 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))>

>

>

Arbeider: Filterdelen tar hver underlistes element og sjekker om den er i kildelisten. Listeforståelsen utføres for hver underliste i liste2.
Produksjon:

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

Metode 6: Bruk redusering():
Algoritme:

  1. Importer reduseringsfunksjonen fra functools-modulen.
  2. Definer to lister.
  3. Initialiser variabelskjæringspunktet med en tom liste.
  4. Bruk reduseringsfunksjonen til å iterere over elementene i lst1.
  5. Inne i lambda-funksjonen, sjekk om det gjeldende elementet er tilstede i lst2 og ikke allerede finnes i krysslisten.
  6. Hvis det er det, legg til det gjeldende elementet i krysslisten.
  7. Returner krysslisten.
  8. Skriv ut krysslisten.

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

>

>

Produksjon

[9, 10, 5, 4]>

Tidskompleksitet: O(n^2), der n er lengden av lst1.
Romkompleksitet: O(n), der n er lengden av lst1.