V programovaní v Pythone je porovnávanie dvoch zoznamov bežnou úlohou s viacerými prístupmi. Tento článok skúma rôzne metódy na získanie odlišnosti medzi dvoma zoznamami, čím sa zlepší vaša odbornosť pri manipulácii so zoznamami a porovnávaní údajov v Python . Pridajte sa k nám na tejto dômyselnej ceste do rôznych stratégií na rozoznanie rozdielov medzi zoznamami.
Príklad
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2>
Poznámka: Keď máte viacero rovnakých prvkov, nebude to fungovať. V takom prípade tento kód jednoducho odstráni rovnaké prvky.
V takom prípade môžete udržiavať počet každého prvku v oboch zoznamoch.
Spôsoby, ako porovnať dva zoznamy v Pythone
Existujú rôzne spôsoby, ako porovnať dva zoznamy v Pythone. Tu diskutujeme o niektorých všeobecne používaných metódach na porovnanie dvoch zoznamov v Pythone, ktoré nasledujú.
- Použitie v metóde
- Používanie porozumenia zoznamu
- Použite set() Funkcia
- Použite Numpy
- Použitím PSČ() Funkcia
- Počítajte výskyty pomocou Počítadlo
Python v kľúčovom slove na porovnanie dvoch zoznamov v Pythone
V tomto príklade kód iteruje prvky v zozname `li1` a pripája každý prvok k `temp3`, ak nie je prítomný v zozname `li2`. Konečný výsledok v 'temp3` obsahuje prvky z `li1`, ktoré nie sú prítomné 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)> |
>
>
Výkon
[10, 15, 20, 30]>
Rozdiel medzi dvoma zoznamami v Pythone pomocou porozumenia zoznamu
V tomto príklade kód vytvorí množinu „s“ z prvkov zoznamu „li2“ a potom vygeneruje nový zoznam „temp3“ obsahujúci prvky zo zoznamu „li1“, ktoré sa nenachádzajú v množine „s“. Nakoniec vytlačí prvky 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)> |
>
>
Výkon
[10, 15, 20, 30]>
Nájdite rozdiel medzi dvoma zoznamami v Pythone pomocou set()
Pri tejto metóde konvertujeme zoznamy na množiny explicitne a potom jednoducho redukujeme jeden od druhého pomocou operátora odčítania. Pre viac referencií na návšteve Sady v Pythone . Je to podobná technika, ktorú sme použili predtým. Jediný rozdiel je v tom, že sme nahradili vnorené slučky s porozumenie zoznamu syntax.
Python3
pytón alebo
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)> |
>
>
Výkon
[10, 15, 20, 30]>
Použite Numpy na Porovnajte dva zoznamy v Pythone
The numpy.concatenate() funkcie zreťaziť sekvenciu polí pozdĺž existujúcej osi. V tomto príklade kód používa NumPy na vytvorenie polí `li1` a `li2`, nájde rozdiely medzi nimi (`dif1` a `dif2`) a spojí tieto rozdiely do jedného zoznamu (`temp3`), pričom nakoniec vytlačí výsledok.
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))> |
>
>
Výkon
[10, 15, 20, 30]>
Porovnajte dva zoznamy v Pythone pomocou funkcie zip().
V tomto príklade kód porovnáva zodpovedajúce prvky dvoch zoznamov, li1 a li2, a vytvára zoznam booleovských hodnôt označujúcich, či sú prvky rovnaké. Funkcia `all` kontroluje, či sú všetky prvky v zozname výsledkov pravdivé.
Python3
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
obsahuje java metódu
>
>
Výkon
False>
Porovnajte dva zoznamy pomocou počtu výskytov pomocou počítadla
V tomto príklade kód používa triedu `Counter` z modulu `collections` na vytvorenie frekvenčných počítadiel pre dva zoznamy `li1` a `li2`. Potom porovná počítadlá, aby skontroloval, či zoznamy obsahujú rovnaké prvky s rovnakou frekvenciou, pričom výsledok priradí `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)> |
>
>
Výkon
False>