logo

Ako porovnať dva zoznamy v Pythone

Python poskytuje viacero spôsobov, ako tieto dva zoznamy porovnať. Porovnávanie je proces, pri ktorom sa dátové položky kontrolujú s inou dátovou položkou zoznamu, či už sú rovnaké alebo nie.

 list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Output - The lists are equal 

Spôsoby porovnania dvoch zoznamov sú uvedené nižšie.

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

Funkcia cmp().

The Python Funkcia cmp() porovná dva objekty Pythonu a vráti celočíselné hodnoty -1, 0, 1 podľa porovnania.

Poznámka - Nepoužíva sa vo verzii Python 3.x.

Funkcia set() a operátor ==

Python set() funkciu manipulovať so zoznamom v množine bez toho, aby ste sa starali o poradie prvkov. Okrem toho používame operátor rovná sa (==) na porovnanie údajových položiek zoznamu. Poďme pochopiť nasledujúci príklad.

Prí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ýkon:

 The list1 and list2 are equal 

Vysvetlenie:

Vo vyššie uvedenom príklade sme deklarovali, že dva zoznamy sa majú navzájom porovnávať. Tieto zoznamy sme previedli na množinu a porovnali každý prvok pomocou operátora ==. Všetky prvky sú rovnaké v oboch zoznamoch, potom ak sa blok vykoná a vytlačí sa výsledok.

Metóda sort() s operátorom ==

Python zoradiť () funkcia sa používa na triedenie zoznamov. Rovnaké prvky zoznamu majú rovnakú pozíciu indexu, čo znamená; zoznamy sú rovnaké.

Poznámka - V metóde sort() môžeme odovzdať položky zoznamu v ľubovoľnom poradí, pretože zoznam pred porovnaním triedime.

Poďme pochopiť nasledujúci príklad -

Prí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ýkon:

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

Funkcia collection.counter().

Modul zberu poskytuje počítadlo(), ktoré zoznam efektívne porovnávajú. Ukladá údaje vo formáte slovníka: a počíta frekvenciu položiek zoznamu.

Poznámka – Na poradí prvkov zoznamu v tejto funkcii nezáleží.

Prí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ýkon:

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

Redukcia() a mapa()

The mapa() funkcia akceptuje funkciu a iterovateľný objekt Pythonu (zoznam, n-ticu, reťazec atď.) ako argumenty a vráti objekt mapy. Funkcia sa implementuje do každého prvku zoznamu a ako výsledok vráti iterátor.

Okrem toho The znížiť () metóda implementuje danú funkciu do iterovateľného objektu rekurzívne.

Tu použijeme obe metódy v kombinácii. The mapa() funkcia by implementovala funkciu (môže to byť užívateľsky definovaná alebo lambda funkcia) do každého iterovateľného objektu a znížiť () funkcia postarať sa, ktorá by platila rekurzívnym spôsobom.

Poznámka - Aby sme mohli použiť funkciu reduction(), musíme importovať modul functool.

Poďme pochopiť nasledujúci príklad.

Prí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ýkon:

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

V tejto časti sme sa zaoberali rôznymi metódami porovnávania dvoch zoznamov v Pythone.