Python | Rozdíl mezi dvěma seznamy

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.

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

[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




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




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




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