logo

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.

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>