Programuojant Python, dviejų sąrašų palyginimas yra įprasta užduotis naudojant kelis metodus. Šiame straipsnyje nagrinėjami skirtingi metodai, kaip nustatyti dviejų sąrašų skirtumus, pagerinti jūsų įgūdžius tvarkyti sąrašus ir palyginti duomenis Python . Prisijunkite prie mūsų šioje įžvalgioje kelionėje į įvairias strategijas, kaip atskirti sąrašų skirtumus.
Pavyzdys
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2>
Pastaba: Jei turite kelis tuos pačius elementus, tai neveiks. Tokiu atveju šis kodas tiesiog pašalins tuos pačius elementus.
Tokiu atveju galite išlaikyti kiekvieno elemento skaičių abiejuose sąrašuose.
Būdai, kaip palyginti du Python sąrašus
Yra įvairių būdų, kaip palyginti du Python sąrašus. Čia aptariame kai kuriuos dažniausiai naudojamus metodus, kaip palyginti du toliau pateiktus Python sąrašus.
- Naudokite metodą
- Sąrašo supratimo naudojimas
- Naudokite rinkinys () Funkcija
- Naudokite Numigęs
- Naudojant zip () Funkcija
- Skaičiuokite įvykius naudodami Skaitliukas
Python raktiniame žodyje, norint palyginti du Python sąrašus
Šiame pavyzdyje kodas kartojasi per elementus sąraše „li1“ ir kiekvieną elementą prideda prie „temp3“, jei jo nėra sąraše „li2“. Galutiniame rezultate „temp3“ yra elementų iš „li1“, kurių nėra „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)> |
>
stdin c
>
Išvestis
[10, 15, 20, 30]>
Skirtumas tarp dviejų Python sąrašų naudojant sąrašo supratimą
Šiame pavyzdyje kodas sukuria rinkinį „s“ iš sąrašo „li2“ elementų, o tada sugeneruoja naują sąrašą „temp3“, kuriame yra elementų iš sąrašo „li1“, kurių nėra rinkinyje „s“. Galiausiai jis atspausdina elementus „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)> |
>
>
Išvestis
bash masyvai
[10, 15, 20, 30]>
Raskite skirtumą tarp dviejų Python sąrašų naudodami set ()
Šiuo metodu sąrašus aiškiai konvertuojame į rinkinius, o tada tiesiog sumažiname vieną nuo kito naudodami atimties operatorių. Norėdami gauti daugiau nuorodų apie rinkinį, apsilankykite Nustatyti Python . Tai panaši technika, kurią naudojome anksčiau. Vienintelis skirtumas yra tas, kad įdėtas kilpas pakeitėme į sąrašo supratimas sintaksė.
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)> |
>
>
Išvestis
[10, 15, 20, 30]>
Naudokite Numpy, kad Palyginkite du Python sąrašus
The numpy.concatenate() funkcija sujungti masyvų seką išilgai esamos ašies. Šiame pavyzdyje kodas naudoja NumPy, kad sukurtų masyvus „li1“ ir „li2“, suranda jų skirtumus („dif1“ ir „dif2“) ir sujungia šiuos skirtumus į vieną sąrašą („temp3“), galiausiai išspausdindamas rezultatas.
Python3
rihannos amžius
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))> |
>
strep c
>
Išvestis
[10, 15, 20, 30]>
Palyginkite du Python sąrašus naudodami zip() funkciją
Šiame pavyzdyje kodas lygina atitinkamus dviejų sąrašų elementus, li1 ir li2, ir sukuria loginių reikšmių sąrašą, nurodantį, ar elementai yra lygūs. Funkcija „visi“ patikrina, ar visi rezultatų sąrašo elementai yra teisingi.
Python3
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
>
>
Išvestis
es5 prieš es6
False>
Palyginkite du sąrašus naudodami įvykių skaičių naudodami skaitiklį
Šiame pavyzdyje kodas naudoja klasę „Counter“ iš modulio „Collections“, kad sukurtų dviejų sąrašų „li1“ ir „li2“ dažnių skaitiklius. Tada jis palygina skaitiklius, kad patikrintų, ar sąrašuose yra tie patys elementai, kurių dažnis yra toks pat, priskirdamas rezultatą „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)> |
>
>
Išvestis
False>