logo

Python | Skirtumas tarp dviejų sąrašų

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>