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