V programování v Pythonu je porovnávání dvou seznamů běžným úkolem s více přístupy. Tento článek se zabývá různými metodami, jak získat odlišnost mezi dvěma seznamy, a zlepšit tak vaši odbornost při práci se seznamy a porovnávání dat v Krajta . Připojte se k nám na této poutavé cestě do různých strategií pro rozpoznání rozdílů mezi seznamy.
chyba atributu python
Pří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: Když máte více stejných prvků, pak by to nefungovalo. V takovém případě tento kód jednoduše odstraní stejné prvky.
V takovém případě můžete udržovat počet každého prvku v obou seznamech.
Způsoby porovnání dvou seznamů v Pythonu
Existují různé způsoby, jak porovnat dva seznamy v Pythonu. Zde diskutujeme o některých obecně používaných metodách pro porovnávání dvou seznamů v Pythonu, které následují.
- Použití v metodě
- Používání funkce List Comprehension
- Použití soubor() Funkce
- Použití Numpy
- Použitím zip() Funkce
- Počítejte výskyty pomocí Čelit
Python v klíčovém slově pro porovnání dvou seznamů v Pythonu
V tomto příkladu kód iteruje prvky v seznamu `li1` a každý prvek připojuje k `temp3`, pokud není přítomen v seznamu `li2`. Konečný výsledek v `temp3` obsahuje prvky z `li1`, které nejsou pří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ýstup
převést řetězec na objekt json
[10, 15, 20, 30]>
Rozdíl mezi dvěma seznamy v Pythonu pomocí porozumění seznamu
V tomto příkladu kód vytvoří sadu ‚s‘ z prvků seznamu ‚li2‘ a poté vygeneruje nový seznam ‚temp3‘ obsahující prvky ze seznamu ‚li1‘, které nejsou přítomny v sadě ‚s‘. Nakonec vytiskne 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ýstup
[10, 15, 20, 30]>
Najděte rozdíl mezi dvěma seznamy v Pythonu pomocí set()
V této metodě převedeme seznamy na množiny explicitně a pak jednoduše jeden od druhého redukujeme pomocí operátoru odečítání. Pro více referencí na návštěvě Sady v Pythonu . Je to podobná technika, kterou jsme používali dříve. Jediný rozdíl je v tom, že jsme nahradili vnořené smyčky za porozumění seznamu 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ýstup
[10, 15, 20, 30]>
Použijte k tomu Numpy Porovnejte dva seznamy v Pythonu
The numpy.concatenate() funkce zřetězit posloupnost polí podél existující osy. V tomto příkladu kód používá NumPy k vytvoření polí `li1` a `li2`, najde nastavené rozdíly mezi nimi (`dif1` a `dif2`) a zřetězí tyto rozdíly do jednoho seznamu (`temp3`), přičemž nakonec vytiskne výsledek.
Python3
ostrov java
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ýstup
[10, 15, 20, 30]>
Porovnejte dva seznamy v Pythonu pomocí funkce zip().
V tomto příkladu kód porovnává odpovídající prvky dvou seznamů, li1 a li2, a vytváří seznam booleovských hodnot označujících, zda jsou prvky stejné. Funkce `all` kontroluje, zda jsou všechny prvky ve výsledkovém seznamu pravdivé.
Python3
mvc java
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
>
>
Výstup
False>
Porovnejte dva seznamy pomocí počítání výskytů pomocí počitadla
V tomto příkladu kód používá třídu `Counter` z modulu `collections` k vytvoření frekvenčních čítačů pro dva seznamy, `li1` a `li2`. Poté porovná počítadla, aby zkontroloval, zda seznamy obsahují stejné prvky se stejnou frekvencí, a výsledek přiřadí `are_lists_equal`.
Python3
délka řetězce java
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ýstup
False>