logo

Kaip palyginti du Python sąrašus

Python siūlo kelis būdus palyginti du sąrašus. Palyginimas yra procesas, kai duomenų elementai tikrinami su kitu sąrašo duomenų elementu, nesvarbu, ar jie yra vienodi, ar ne.

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

Toliau pateikiami dviejų sąrašų palyginimo metodai.

  • Funkcija cmp().
  • Funkcija set() ir == operatorius
  • Funkcija sort() ir == operatorius
  • Funkcija collection.counter()
  • Sumažinti () ir map () funkcijos

Funkcija cmp().

The Python cmp() funkcija palygina du Python objektus ir pagal palyginimą grąžina sveikųjų skaičių reikšmes -1, 0, 1.

Pastaba – jis nenaudojamas Python 3.x versijoje.

Funkcija set() ir == operatorius

Python rinkinys () funkcija manipuliuoti sąrašu į rinkinį nesirūpinant elementų tvarka. Be to, norėdami palyginti sąrašo duomenų elementus, naudojame operatorių lygus (==). Supraskime šį pavyzdį.

100 km/h iki mph

Pavyzdys -

 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') 

Išvestis:

 The list1 and list2 are equal 

Paaiškinimas:

Aukščiau pateiktame pavyzdyje paskelbėme, kad abu sąrašai bus lyginami vienas su kitu. Mes konvertavome tuos sąrašus į rinkinį ir palyginome kiekvieną elementą naudodami == operatorių. Visi elementai yra vienodi abiejuose sąrašuose, tada, jei blokas vykdomas ir išspausdinamas rezultatas.

Rūšiavimo() metodas su == operatoriumi

Python Rūšiuoti () funkcija naudojama sąrašams rūšiuoti. To paties sąrašo elementai yra ta pati indekso padėtis, kurią jis reiškia; sąrašai yra lygūs.

Pastaba – naudojant sort() metodą, sąrašo elementus galime perduoti bet kokia tvarka, nes sąrašą rūšiuojame prieš palyginimą.

Supraskime šį pavyzdį -

Pavyzdys -

 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') 

Išvestis:

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

Funkcija collection.counter()

Surinkimo modulis suteikia skaitiklis (), kurie efektyviai palygina sąrašą. Jis saugo duomenis žodyno formatu: ir skaičiuoja sąrašo elementų dažnumą.

kiek savaičių per mėnesį

Pastaba – naudojant šią funkciją sąrašo elementų tvarka neturi reikšmės.

Pavyzdys -

 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') 

Išvestis:

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

Sumažinti () ir žemėlapis ()

The žemėlapis () funkcija priima funkciją ir Python kartotinį objektą (sąrašą, eilutę, eilutę ir kt.) kaip argumentus ir grąžina žemėlapio objektą. Funkcija įgyvendina kiekvieną sąrašo elementą ir grąžina iteratorių.

Be to, The sumažinti () metodas rekursyviai įgyvendina nurodytą funkciją iteruojamam objektui.

apvalaus darbo planavimo algoritmas

Čia mes naudosime abu metodus kartu. The žemėlapis () funkcija įdiegtų funkciją (tai gali būti vartotojo apibrėžta arba lambda funkcija) kiekvienam kartojamam objektui ir sumažinti () funkcija pasirūpinti, kuri būtų taikoma rekursiniu būdu.

Pastaba – turime importuoti functool modulį, kad galėtume naudoti redukcijos () funkciją.

Supraskime šį pavyzdį.

Pavyzdys -

 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') 

Išvestis:

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

Šiame skyriuje aptarėme įvairius metodus, kaip palyginti du Python sąrašus.