Python programmēšanā divu sarakstu salīdzināšana ir izplatīts uzdevums ar vairākām pieejām. Šajā rakstā ir aplūkotas dažādas metodes, kā iegūt atšķirību starp diviem sarakstiem, uzlabot jūsu prasmes apstrādāt sarakstus un salīdzināt datus Python . Pievienojieties mums šajā izsmeļošajā ceļojumā, lai izpētītu dažādas stratēģijas, lai noteiktu atšķirības starp sarakstiem.
burbulis kārtot java
Piemērs
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2>
Piezīme: Ja jums ir vairāki vienādi elementi, tas nedarbosies. Tādā gadījumā šis kods vienkārši noņems tos pašus elementus.
Tādā gadījumā jūs varat saglabāt katra elementa skaitu abos sarakstos.
Veidi, kā salīdzināt divus sarakstus programmā Python
Ir dažādi veidi, kā salīdzināt divus sarakstus programmā Python. Šeit mēs apspriežam dažas vispārīgi izmantotās metodes divu Python sarakstu salīdzināšanai.
- Izmantot metodē
- Saraksta izpratnes izmantošana
- Izmantot set() Funkcija
- Izmantot Neskaidrs
- Izmantojot zip() Funkcija
- Skaitīt notikumus, izmantojot Skaitītājs
Python atslēgvārdā, lai salīdzinātu divus Python sarakstus
Šajā piemērā kods atkārtojas caur elementiem sarakstā “li1” un pievieno katru elementu “temp3”, ja tas nav iekļauts sarakstā “li2”. Gala rezultātos temp3 ir elementi no “li1”, kas nav ietverti “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)> |
>
>
Izvade
[10, 15, 20, 30]>
Atšķirība starp diviem Python sarakstiem, izmantojot saraksta izpratni
Šajā piemērā kods izveido kopu “s” no saraksta “li2” elementiem un pēc tam ģenerē jaunu sarakstu “temp3”, kas satur elementus no saraksta “li1”, kas nav iekļauti kopā “s”. Visbeidzot, tas izdrukā 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)> |
>
>
Izvade
[10, 15, 20, 30]>
Atrodiet atšķirību starp diviem Python sarakstiem, izmantojot set ()
Izmantojot šo metodi, mēs nepārprotami pārvēršam sarakstus kopās un pēc tam vienkārši samazinām vienu no otra, izmantojot atņemšanas operatoru. Lai iegūtu vairāk atsauces par komplektu, apmeklējiet Iestati Python . Tā ir līdzīga tehnika, ko izmantojām iepriekš. Vienīgā atšķirība ir tā, ka mēs aizstājām ligzdotās cilpas ar saraksta izpratne sintakse.
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)> |
>
>
Izvade
[10, 15, 20, 30]>
Izmantojiet Numpy, lai Salīdziniet divus sarakstus programmā Python
The numpy.concatenate() funkcija sasaistīt masīvu secību pa esošu asi. Šajā piemērā kods izmanto NumPy, lai izveidotu masīvus 'li1' un 'li2', atrod kopu atšķirības starp tiem ('dif1' un 'dif2') un savieno šīs atšķirības vienā sarakstā (temp3), beidzot izdrukājot rezultāts.
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))> |
>
>
Izvade
[10, 15, 20, 30]>
Salīdziniet divus Python sarakstus, izmantojot funkciju zip()
Šajā piemērā kods salīdzina atbilstošos divu sarakstu elementus, li1 un li2, un izveido Būla vērtību sarakstu, kas norāda, vai elementi ir vienādi. Funkcija 'visi' pārbauda, vai visi rezultātu saraksta elementi ir patiesi.
Python3
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
>
>
Izvade
False>
Salīdziniet divus sarakstus, izmantojot skaitīšanas gadījumus, izmantojot skaitītāju
Šajā piemērā kodā tiek izmantota klase Counter no moduļa kolekcijām, lai izveidotu biežuma skaitītājus diviem sarakstiem — li1 un li2. Pēc tam tas salīdzina skaitītājus, lai pārbaudītu, vai sarakstos ir vieni un tie paši elementi ar vienādām frekvencēm, piešķirot rezultātu “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)> |
>
>
Izvade
False>