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

Izhod

False