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)> |
java main
>
>
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.
primær nøgle og sammensat nøgle i sql
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
powershell admin
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>