Kahden listan leikkaus tarkoittaa, että meidän on otettava kaikki ne elementit, jotka ovat yhteisiä molemmille alkuperäisille listoille, ja tallennettava ne toiseen luetteloon. Pythonissa on nyt useita tapoja, joiden avulla voimme suorittaa luetteloiden risteyksen.
Esimerkkejä:
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]>
Tapa 1:
Tämä on yksinkertaisin menetelmä, jossa emme ole käyttäneet mitään sisäänrakennettuja toimintoja.
Python 3
matemaattiset menetelmät javassa
# 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))> |
>
>
Lähtö:
[9, 11, 26, 28]>
Tapa 2:
Tämä menetelmä sisältää käytön set() -menetelmä .
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))> |
>
>
Lähtö:
[9, 10, 4, 5]>
Yllä olevan ohjelman aikamonimutkaisuus on O(n), missä n on pidemmän listan pituus lst1:n ja lst2:n välillä.
Ohjelman monimutkaisuus on O(n), missä n on lst1:n ja lst2:n välisen pienemmän listan pituus.
Tapa 3:
Tässä menetelmässä me set() suurempi luettelo ja käytä sitten sisäänrakennettua toimintoa nimeltä Risteys() laskeaksesi leikatun listan. Risteys() on sarjan ensiluokkainen osa.
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))> |
>
>
Lähtö:
{9, 11}> Tapa 4:
Tätä käyttämällä hybridi menetelmä ohjelman monimutkaisuus putoaa arvoon O(n). Tämä on tehokas tapa suorittaa seuraava ohjelma.
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))> |
>
>
Lähtö:
[9, 9, 11]>
Menetelmä 5:
Tämä on paikka, jossa leikkaus suoritetaan muiden luetteloiden sisällä olevien aliluetteloiden yli. Tässä olemme käyttäneet käsitettä suodattaa().
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))> |
>
>
Työskentely: Suodatinosa ottaa kunkin aliluettelon kohteen ja tarkistaa, onko se lähdeluettelossa. Listan ymmärtäminen suoritetaan jokaiselle listan2 aliluettelolle.
Lähtö:
[[13, 32], [7, 13, 28], [1, 6]]>
Tapa 6: Käytä vähennä():
Algoritmi:
- Tuo vähennystoiminto functools-moduulista.
- Määrittele kaksi listaa.
- Alusta muuttujan leikkaus tyhjällä listalla.
- Käytä vähennysfunktiota iteroidaksesi lst1:n elementtejä.
- Tarkista lambda-funktion sisällä, onko nykyinen elementti lst2:ssa eikä jo ole leikkausluettelossa.
- Jos on, lisää nykyinen elementti risteysluetteloon.
- Palauta risteysluettelo.
- Tulosta risteysluettelo.
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.> |
>
>Lähtö
[9, 10, 5, 4]>
Aika monimutkaisuus: O(n^2), missä n on lst1:n pituus.
Tilan monimutkaisuus: O(n), missä n on lst1:n pituus.