logo

Sådan sammenlignes to lister i Python

Python giver flere måder at sammenligne de to lister på. Sammenligning er den proces, hvor dataelementerne kontrolleres mod et andet dataelement på listen, uanset om de er ens eller ej.

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

Metoderne til at sammenligne to lister er angivet nedenfor.

  • cmp()-funktionen
  • Set()-funktionen og ==-operatoren
  • Sort()-funktionen og ==-operatoren
  • Funktionen collection.counter()
  • Funktionen reduce() og map()

cmp()-funktionen

Det Python cmp()-funktionen sammenligner de to Python-objekter og returnerer heltalsværdierne -1, 0, 1 ifølge sammenligningen.

Bemærk - Det bruges ikke i Python 3.x-versionen.

Set()-funktionen og ==-operatoren

Python sæt() fungere manipulere listen ind i sættet uden at tage sig af rækkefølgen af ​​elementer. Desuden bruger vi lig med operatoren (==) til at sammenligne dataelementerne på listen. Lad os forstå følgende eksempel.

Eksempel -

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

Produktion:

 The list1 and list2 are equal 

Forklaring:

I ovenstående eksempel har vi erklæret, at de to lister skal sammenlignes med hinanden. Vi konverterede disse lister til sættet og sammenlignede hvert element ved hjælp af ==-operatoren. Alle elementer er ens i begge lister, så hvis blok udført og udskrevet resultatet.

Sort()-metoden med ==-operatoren

Python sortere() funktionen bruges til at sortere listerne. Den samme listes elementer er den samme indeksposition, som det betyder; lister er lige.

Bemærk - I sort()-metoden kan vi sende listeelementerne i en hvilken som helst rækkefølge, fordi vi sorterer listen før sammenligning.

Lad os forstå følgende eksempel -

Eksempel -

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

Produktion:

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

Funktionen collection.counter()

Indsamlingsmodulet giver tæller(), som sammenligner listen effektivt. Den gemmer dataene i ordbogsformat : og tæller hyppigheden af ​​listens punkter.

Bemærk - Rækkefølgen af ​​listens elementer er ligegyldig i denne funktion.

Eksempel -

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

Produktion:

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

Reducer() og map()

Det kort() funktion accepterer en funktion og Python iterable objekt (liste, tuple, streng osv.) som argumenter og returnerer et kortobjekt. Funktionen implementerer hvert element på listen og returnerer en iterator som et resultat.

Udover det reducere() metoden implementerer den givne funktion til det iterable objekt rekursivt.

Her vil vi bruge begge metoder i kombination. Det kort() funktion ville implementere funktionen (den kan være brugerdefineret eller lambda-funktion) til hvert iterable objekt og reducere() funktion tage sig af, der ville gælde på rekursiv måde.

Bemærk - Vi skal importere functool-modulet for at bruge reduce()-funktionen.

Lad os forstå følgende eksempel.

Eksempel -

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

Produktion:

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

I dette afsnit har vi dækket forskellige metoder til at sammenligne to lister i Python.