Python | Forskjellen mellom to lister

I Python-programmering er det å sammenligne to lister en vanlig oppgave med flere tilnærminger. Denne artikkelen utforsker ulike metoder for å finne ulikhetene mellom to lister, forbedre ferdighetene dine i å håndtere lister og datasammenligning i Python . Bli med oss ​​på denne innsiktsfulle reisen til ulike strategier for å se forskjeller mellom lister.

Eksempel

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

Merk: Når du har flere samme elementer, vil ikke dette fungere. I så fall vil denne koden ganske enkelt fjerne de samme elementene.
I så fall kan du opprettholde en telling av hvert element i begge listene.

Måter å sammenligne to lister i Python

Det er forskjellige måter å sammenligne to lister i Python. Her diskuterer vi noen generelt brukte metoder for å sammenligne to lister i Python som følger.

  • Bruk i metode
  • Bruke listeforståelse
  • Bruk sett() Funksjon
  • Bruk Numpy
  • Ved hjelp av glidelås() Funksjon
  • Tell forekomster ved hjelp av Disk

Python i nøkkelord for å sammenligne to lister i Python

I dette eksemplet itererer koden gjennom elementene i listen `li1`, og legger til hvert element til `temp3` hvis det ikke er til stede i listen `li2`. Det endelige resultatet i `temp3` inneholder elementer fra `li1` som ikke finnes i `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)>

Produksjon

[10, 15, 20, 30] 

Forskjellen mellom to lister i Python ved å bruke en listeforståelse

I dette eksemplet oppretter koden et sett 's' fra elementene i listen 'li2', og genererer deretter en ny liste 'temp3' som inneholder elementer fra listen 'li1' som ikke er til stede i settet 's'. Til slutt skriver den ut elementene i ‘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)>

Produksjon

[10, 15, 20, 30] 

Finn forskjellen mellom to lister i Python ved å bruke set()

I denne metoden konverterer vi listene eksplisitt til sett, og deretter reduserer vi bare den ene fra den andre ved å bruke subtraheringsoperatoren. For flere referanser på sett besøk Setter i Python . Det er en lignende teknikk som vi brukte tidligere. Den eneste forskjellen er at vi erstattet de nestede løkkene med listeforståelse syntaks.

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

Produksjon

[10, 15, 20, 30] 

Bruk Numpy for å Sammenlign to lister i Python

De numpy.concatenate() funksjon sammenkoble en sekvens av matriser langs en eksisterende akse. I dette eksempelet bruker koden NumPy til å lage matrisene `li1` og `li2`, finner de angitte forskjellene mellom dem (`dif1` og `dif2`), og setter disse forskjellene sammen til en enkelt liste (`temp3`), og skriver til slutt ut resultat.

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

Produksjon

[10, 15, 20, 30] 

Sammenlign to lister i Python ved å bruke zip()-funksjonen

I dette eksempelet sammenligner koden tilsvarende elementer i to lister, li1 og li2, og lager en liste med boolske verdier som indikerer om elementene er like. 'alle'-funksjonen sjekker om alle elementene i resultatlisten er sanne.

Python3




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

Produksjon

False 

Sammenlign to lister ved hjelp av telleforekomster med teller

I dette eksempelet bruker koden `Counter`-klassen fra `collections`-modulen for å lage frekvenstellere for to lister, `li1` og `li2`. Den sammenligner deretter tellerne for å sjekke om listene har de samme elementene med de samme frekvensene, og tilordner resultatet til «are_lister_lik».

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

Produksjon

False