logo

Python | Razlika med dvema seznamoma

V programiranju Python je primerjava dveh seznamov pogosta naloga z več pristopi. Ta članek raziskuje različne metode za ugotavljanje razlik med dvema seznamoma, izboljšanje vaše usposobljenosti za ravnanje s seznami in primerjavo podatkov v Python . Pridružite se nam na tem pronicljivem potovanju v različne strategije za zaznavanje razlik med seznami.

Primer



  Input:   list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35]   Output:   [10, 15, 20, 30]   Explanation:   resultant list = list1 - list2>

Opomba: Če imate več enakih elementov, to ne bo delovalo. V tem primeru bo ta koda preprosto odstranila iste elemente.
V tem primeru lahko vzdržujete število vsakega elementa na obeh seznamih.

Načini primerjave dveh seznamov v Pythonu

Obstaja več načinov za primerjavo dveh seznamov v Pythonu. Tukaj razpravljamo o nekaterih splošno uporabljenih metodah za primerjavo dveh seznamov v Pythonu, ki sledijo.

  • Uporabite v metodi
  • Uporaba seznamskega razumevanja
  • Uporaba set() funkcija
  • Uporaba Numpy
  • Uporaba zip() funkcija
  • Štetje pojavitev z uporabo števec

Python v ključni besedi za primerjavo dveh seznamov v Pythonu

V tem primeru koda ponavlja elemente na seznamu »li1« in doda vsak element v »temp3«, če ni na seznamu »li2«. Končni rezultat v »temp3« vsebuje elemente iz »li1«, ki niso prisotni v »li2«.



Python3






li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> temp3>=> []> for> element>in> li1:> >if> element>not> in> li2:> >temp3.append(element)> print>(temp3)>

>

>

Izhod

[10, 15, 20, 30]>

Razlika med dvema seznamoma v Pythonu z uporabo razumevanja seznama

V tem primeru koda ustvari niz 's' iz elementov seznama 'li2' in nato ustvari nov seznam 'temp3', ki vsebuje elemente s seznama 'li1', ki niso prisotni v nizu 's'. Na koncu natisne elemente v 'temp3'.

Python3




li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)>

>

>

Izhod

[10, 15, 20, 30]>

Poiščite razliko med dvema seznamoma v Pythonu z uporabo set()

Pri tej metodi sezname eksplicitno pretvorimo v nabore in nato preprosto zmanjšamo enega od drugega z uporabo operatorja odštevanja. Za več referenc na setu obiščite Nastavi v Pythonu . Gre za podobno tehniko, ki smo jo uporabljali prej. Edina razlika je, da smo ugnezdene zanke zamenjali z razumevanje seznama sintaksa.

Python3




li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)>

>

>

Izhod

[10, 15, 20, 30]>

Uporabite Numpy za Primerjajte dva seznama v Pythonu

The numpy.concatenate() funkcija združi zaporedje nizov vzdolž obstoječe osi. V tem primeru koda uporablja NumPy za ustvarjanje nizov `li1` in `li2`, najde nastavljene razlike med njima (`dif1` in `dif2`) in združi te razlike v en sam seznam (`temp3`), na koncu pa natisne rezultat.

Python3




import> numpy as np> li1>=> np.array([>10>,>15>,>20>,>25>,>30>,>35>,>40>])> li2>=> np.array([>25>,>40>,>35>])> dif1>=> np.setdiff1d(li1, li2)> dif2>=> np.setdiff1d(li2, li1)> temp3>=> np.concatenate((dif1, dif2))> print>(>list>(temp3))>

>

>

Izhod

[10, 15, 20, 30]>

Primerjajte dva seznama v Pythonu s funkcijo zip().

V tem primeru koda primerja ustrezne elemente dveh seznamov, li1 in li2, in ustvari seznam logičnih vrednosti, ki kažejo, ali sta elementa enaka. Funkcija `all` preveri, ali so vsi elementi na seznamu rezultatov True.

Python3




li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))>

>

>

Izhod

False>

Primerjajte dva seznama s štetjem pojavitev s števcem

V tem primeru koda uporablja razred »Števec« iz modula »zbirke« za ustvarjanje frekvenčnih števcev za dva seznama, »li1« in »li2«. Nato primerja števce, da preveri, ali imajo seznami enake elemente z enakimi frekvencami, pri čemer rezultat dodeli `are_lists_equal`.

Python3




from> collections>import> Counter> li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> counter1>=> Counter(li1)> counter2>=> Counter(li2)> are_lists_equal>=> counter1>=>=> counter2> print>(are_lists_equal)>

bfs iskanje
>

>

Izhod

False>