Python | Forskellen mellem to lister
I Python-programmering er sammenligning af to lister en almindelig opgave med flere tilgange. Denne artikel udforsker forskellige metoder til at opnå uligheden mellem to lister, hvilket forbedrer dine færdigheder i at håndtere lister og datasammenligning i Python . Tag med os på denne indsigtsfulde rejse i forskellige strategier til at skelne forskelle mellem 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
Bemærk: Når du har flere samme elementer, ville dette ikke fungere. I så fald vil denne kode blot fjerne de samme elementer.
I så fald kan du opretholde en optælling af hvert element i begge lister.
Måder at sammenligne to lister i Python
Der er forskellige måder at sammenligne to lister i Python. Her diskuterer vi nogle generelt brugte metoder til at sammenligne to lister i Python, som de følger.
- Brug i metode
- Brug af listeforståelse
- Brug sæt() Fungere
- Brug Numpy
- Ved brug af zip() Fungere
- Tæl forekomster vha Tæller
Python i nøgleord for at sammenligne to lister i Python
I dette eksempel itererer koden gennem elementer i listen `li1` og tilføjer hvert element til `temp3`, hvis det ikke er til stede i listen `li2`. Det endelige resultat i `temp3` indeholder elementer fra `li1`, der ikke er til stede 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)> |
Produktion
[10, 15, 20, 30]
Forskel mellem to lister i Python ved hjælp af en listeforståelse
I dette eksempel opretter koden et sæt 's' fra elementerne i listen 'li2' og genererer derefter en ny liste 'temp3' indeholdende elementer fra listen 'li1', som ikke er til stede i sættet 's'. Til sidst udskriver den elementerne 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)> |
Produktion
[10, 15, 20, 30]
Find forskellen mellem to lister i Python ved hjælp af set()
I denne metode konverterer vi listerne til sæt eksplicit og reducerer derefter blot den ene fra den anden ved at trække fra operatoren. For flere referencer på sæt besøg Sætter sig i Python . Det er en lignende teknik, som vi brugte tidligere. Den eneste forskel er, at vi erstattede de indlejrede løkker 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)> |
Produktion
[10, 15, 20, 30]
Brug Numpy til Sammenlign to lister i Python
Det numpy.concatenate() funktion sammenkæde en sekvens af arrays langs en eksisterende akse. I dette eksempel bruger kode NumPy til at skabe arrays `li1` og `li2`, finder de indstillede forskelle mellem dem (`dif1` og `dif2`), og sammenkæder disse forskelle i en enkelt liste (`temp3`), og udskriver til sidst 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))> |
Produktion
[10, 15, 20, 30]
Sammenlign to lister i Python ved hjælp af zip()-funktionen
I dette eksempel sammenligner koden tilsvarende elementer i to lister, li1 og li2, og opretter en liste over booleske værdier, der angiver, om elementerne er ens. 'alle'-funktionen kontrollerer, om alle elementer i resultatlisten er sande.
Python3
li1> => [> 10> ,> 15> ,> 20> ]> li2> => [> 25> ,> 40> ,> 35> ]> result> => [a> => => b> for> a, b> in> zip> (li1, li2)]> print> (> all> (result))> |
Produktion
False
Sammenlign to lister ved hjælp af tælle forekomster ved hjælp af tæller
I dette eksempel bruger koden `Counter`-klassen fra `collections`-modulet til at oprette frekvenstællere for to lister, `li1` og `li2`. Den sammenligner derefter tællerne for at kontrollere, om listerne har de samme elementer med de samme frekvenser, og tildeler resultatet til `are_lister_lige`.
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)> |
Produktion
False