Python | Rozdiel medzi dvoma zoznamami
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
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))> |
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