Python-ohjelmoinnissa kahden luettelon vertailu on yleinen tehtävä useilla lähestymistavoilla. Tässä artikkelissa tarkastellaan erilaisia menetelmiä kahden luettelon välisen eron saamiseksi, jotta voit parantaa luetteloiden käsittelyä ja tietojen vertailua Python . Liity kanssamme tälle oivaltavalle matkalle eri strategioihin, joiden avulla voit havaita luetteloiden väliset erot.
Esimerkki
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2>
Huomautus: Jos sinulla on useita samoja elementtejä, tämä ei toimi. Siinä tapauksessa tämä koodi yksinkertaisesti poistaa samat elementit.
Siinä tapauksessa voit ylläpitää kunkin elementin määrää molemmissa luetteloissa.
Tapoja vertailla kahta luetteloa Pythonissa
Pythonissa on useita tapoja verrata kahta luetteloa. Täällä keskustelemme joistakin yleisesti käytetyistä menetelmistä kahden seuraavan Python-luettelon vertailuun.
- Käytä menetelmässä
- Listan ymmärtämisen käyttäminen
- Käyttää aseta() Toiminto
- Käyttää Nuhjuinen
- Käyttämällä postinumero() Toiminto
- Laske esiintymät käyttämällä Laskuri
Python avainsanassa kahden Python-luettelon vertailuun
Tässä esimerkissä koodi toistuu listan 'li1' elementtien läpi ja liittää jokaisen elementin 'temp3':een, jos se ei ole luettelossa 'li2'. Temp3:n lopputulos sisältää elementtejä li1:stä, joita ei ole li2:ssa.
Python 3
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)> |
>
>
Lähtö
[10, 15, 20, 30]>
Ero kahden luettelon välillä Pythonissa käyttämällä luettelon ymmärtämistä
Tässä esimerkissä koodi luo joukon 's' luettelon 'li2' elementeistä ja luo sitten uuden luettelon 'temp3', joka sisältää elementtejä luettelosta 'li1', joita ei ole joukossa 's'. Lopuksi se tulostaa elementit temp3:ssa.
Python 3
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)> |
>
>
Lähtö
[10, 15, 20, 30]>
Etsi ero kahden luettelon välillä Pythonissa käyttämällä set()
Tässä menetelmässä luettelot muunnetaan joukoiksi eksplisiittisesti ja vähennetään sitten yksinkertaisesti toisista käyttämällä vähennysoperaattoria. Lisää referenssejä sarjasta vierailemalla Asettaa Pythonissa . Se on samanlainen tekniikka, jota käytimme aiemmin. Ainoa ero on, että korvasimme sisäkkäiset silmukat listan ymmärtäminen syntaksi.
Python 3
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)> |
>
>
Lähtö
[10, 15, 20, 30]>
Käytä Numpya Vertaa kahta luetteloa Pythonissa
The numpy.concatenate() funktio ketjuttaa taulukoiden sarjan olemassa olevaa akselia pitkin. Tässä esimerkissä koodi käyttää NumPy-komentoa taulukoiden 'li1' ja 'li2' luomiseen, etsii niiden väliset erot ('dif1' ja 'dif2') ja ketjuttaa nämä erot yhdeksi luetteloksi ('temp3') ja tulostaa lopuksi tulos.
Python 3
java geneeriset tuotteet
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))> |
>
>
Lähtö
[10, 15, 20, 30]>
Vertaile kahta Python-listaa käyttämällä zip()-funktiota
Tässä esimerkissä koodi vertailee kahden listan, li1 ja li2, vastaavia elementtejä ja luo luettelon loogisista arvoista, jotka osoittavat ovatko elementit samanarvoisia. Kaikki-funktio tarkistaa, ovatko kaikki tulosluettelon elementit tosi.
Python 3
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
>
>
Lähtö
False>
Vertaa kahta luetteloa käyttämällä Count esiintymät käyttämällä laskuria
Tässä esimerkissä koodi käyttää `Counter`-luokkaa `collections`-moduulista luomaan taajuuslaskurit kahdelle listalle, `li1` ja `li2`. Sitten se vertaa laskureita tarkistaakseen, onko luetteloissa samoja elementtejä samoilla taajuuksilla, ja määrittää tulokseksi 'are_lists_equal'.
Python 3
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)> |
>
>
Lähtö
False>