logo

Jak porovnat dva seznamy v Pythonu

Python poskytuje několik způsobů, jak tyto dva seznamy porovnat. Porovnání je proces, kdy jsou datové položky kontrolovány s jinou datovou položkou seznamu, zda jsou stejné nebo ne.

liška nebo vlk
 list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Output - The lists are equal 

Způsoby porovnání dvou seznamů jsou uvedeny níže.

  • Funkce cmp().
  • Funkce set() a operátor ==
  • Funkce sort() a operátor ==
  • Funkce collection.counter().
  • Funkce reduction() a map().

Funkce cmp().

The Krajta Funkce cmp() porovná dva objekty Pythonu a vrátí celočíselné hodnoty -1, 0, 1 podle porovnání.

Poznámka - Ve verzi Python 3.x se nepoužívá.

Funkce set() a operátor ==

Krajta soubor() funkce manipulovat se seznamem do množiny, aniž byste se starali o pořadí prvků. Kromě toho používáme operátor rovná se (==) k porovnání datových položek seznamu. Pojďme pochopit následující příklad.

Příklad -

 list1 = [11, 12, 13, 14, 15] list2 = [12, 13, 11, 15, 14] a = set(list1) b = set(list2) if a == b: print('The list1 and list2 are equal') else: print('The list1 and list2 are not equal') 

Výstup:

 The list1 and list2 are equal 

Vysvětlení:

Ve výše uvedeném příkladu jsme deklarovali, že se mají oba seznamy vzájemně porovnávat. Tyto seznamy jsme převedli na množinu a porovnali každý prvek pomocí operátoru ==. Všechny prvky jsou stejné v obou seznamech, pak pokud se blok provede a vytiskne výsledek.

Metoda sort() s operátorem ==

Krajta seřadit () funkce se používá k řazení seznamů. Stejné prvky seznamu jsou na stejné pozici indexu, což znamená; seznamy jsou si rovny.

Poznámka - V metodě sort() můžeme předat položky seznamu v libovolném pořadí, protože seznam před porovnáním třídíme.

Pojďme pochopit následující příklad -

Příklad -

 import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] # Sorting the list list1.sort() list2.sort() list3.sort() if list1 == list2: print('The list1 and list2 are the same') else: print('The list1 and list3 are not the same') if list1 == list3: print('The list1 and list2 are not the same') else: print('The list1 and list2 are not the same') 

Výstup:

práce na počítači
 The list1 and list3 are not the same The list1 and list2 are not the same 

Funkce collection.counter().

Sběrný modul poskytuje čelit(), které seznam efektivně porovnávají. Ukládá data ve formátu slovníku: a počítá frekvenci položek seznamu.

Poznámka - Na pořadí prvků seznamu v této funkci nezáleží.

Příklad -

 import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] if collections.Counter(list1) == collections.Counter(list2): print('The lists l1 and l2 are the same') else: print('The lists l1 and l2 are not the same') if collections.Counter(list1) == collections.Counter(list3): print('The lists l1 and l3 are the same') else: print('The lists l1 and l3 are not the same') 

Výstup:

 The lists list1 and list2 are not the same The lists list1 and list3 are the same 

Redukovat() a map()

The mapa() funkce přijímá funkci a iterovatelný objekt Pythonu (seznam, n-tice, řetězec atd.) jako argumenty a vrací objekt mapy. Funkce se implementuje do každého prvku seznamu a jako výsledek vrátí iterátor.

Kromě snížit() metoda implementuje danou funkci do iterovatelného objektu rekurzivně.

Zde použijeme obě metody v kombinaci. The mapa() funkce by implementovala funkci (může to být uživatelsky definovaná nebo lambda funkce) do každého iterovatelného objektu a snížit() funkce se postarat, která by platila rekurzivním způsobem.

java metoda

Poznámka - Aby bylo možné použít funkci reduction(), musíme modul functool importovat.

Pojďme pochopit následující příklad.

Příklad -

 import functools list1 = [10, 20, 30, 40, 50] list2 = [10, 20, 30, 50, 40, 60, 70] list3 = [10, 20, 30, 40, 50] if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True): print('The list1 and list2 are the same') else: print('The list1 and list2 are not the same') if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True): print('The list1 and list3 are the same') else: print('The list1 and list3 are not the same') 

Výstup:

 The list1 and list2 are not the same The list1 and list3 are the same 

V této části jsme probrali různé metody porovnávání dvou seznamů v Pythonu.