logo

Hogyan hasonlítsunk össze két listát Pythonban

A Python többféle módot kínál a két lista összehasonlítására. Az összehasonlítás az a folyamat, amikor az adatelemeket a lista egy másik adateleméhez hasonlítják, függetlenül attól, hogy azonosak-e vagy sem.

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

Az alábbiakban bemutatjuk a két lista összehasonlításának módszereit.

  • A cmp() függvény
  • A set() függvény és az == operátor
  • A sort() függvény és az == operátor
  • A collection.counter() függvény
  • A redukció() és a map() függvény

A cmp() függvény

A Piton cmp() függvény összehasonlítja a két Python objektumot, és az összehasonlításnak megfelelően -1, 0, 1 egész értékeket ad vissza.

Megjegyzés – Python 3.x verzióban nem használható.

A set() függvény és az == operátor

Piton készlet() funkció manipulálja a listát a halmazba anélkül, hogy ügyelne az elemek sorrendjére. Emellett az egyenlő operátort (==) használjuk a lista adatelemeinek összehasonlítására. Értsük meg a következő példát.

Példa -

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

Kimenet:

 The list1 and list2 are equal 

Magyarázat:

A fenti példában a két listát egymással összehasonlításra deklaráltuk. Ezeket a listákat a halmazba konvertáltuk, és az egyes elemeket összehasonlítottuk az == operátor segítségével. Minden elem egyenlő mindkét listában, majd ha a blokkot végrehajtjuk és kinyomtatjuk az eredményt.

int konvertálása karakterláncra

A sort() metódus == operátorral

Piton fajta() függvény a listák rendezésére szolgál. Ugyanannak a listaelemnek ugyanaz az indexpozíciója, mint amit jelent; a listák egyenlőek.

Megjegyzés - A sort() metódusban a listaelemeket tetszőleges sorrendben adhatjuk át, mert összehasonlítás előtt rendezzük a listát.

Értsük meg a következő példát -

Példa -

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

Kimenet:

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

A collection.counter() függvény

A gyűjtőmodul biztosítja a számláló(), amelyek hatékonyan hasonlítják össze a listát. Az adatokat szótár formátumban tárolja: és számolja a lista elemeinek gyakoriságát.

Megjegyzés - A lista elemeinek sorrendje ebben a függvényben nem számít.

Példa -

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

Kimenet:

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

A redukció() és a map()

A térkép() függvény argumentumként fogad el egy függvényt és egy Python iterálható objektumot (lista, sor, karakterlánc stb.), és egy leképezési objektumot ad vissza. A függvény a lista minden elemét implementálja, és ennek eredményeként egy iterátort ad vissza.

git add --all

Mellett csökkenti() metódus rekurzívan implementálja az adott függvényt az iterálható objektumhoz.

Itt mindkét módszert kombinálva fogjuk használni. A térkép() függvény implementálja a függvényt (lehet felhasználó által definiált vagy lambda függvény) minden iterálható objektumra és a csökkenti() függvény gondoskodik, amely rekurzív módon érvényesülne.

Megjegyzés - Importálnunk kell a functool modult, hogy használhassuk a Reduction() függvényt.

Értsük meg a következő példát.

Példa -

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

Kimenet:

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

Ebben a részben bemutattuk a Python két lista összehasonlításának különféle módszereit.