logo

Com comparar dues llistes a Python

Python ofereix diverses maneres de comparar les dues llistes. La comparació és el procés en què els elements de dades es contrasten amb un altre element de dades de la llista, siguin iguals o no.

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

Els mètodes per comparar dues llistes es donen a continuació.

  • La funció cmp().
  • La funció set() i l'operador ==
  • La funció sort() i l'operador ==
  • La funció collection.counter().
  • La funció reduce() i map().

La funció cmp().

El Python La funció cmp() compara els dos objectes de Python i retorna els valors enters -1, 0, 1 segons la comparació.

Nota: no s'utilitza a la versió de Python 3.x.

La funció set() i l'operador ==

Python conjunt() funció manipular la llista en el conjunt sense tenir cura de l'ordre dels elements. A més, utilitzem l'operador igual a (==) per comparar les dades de la llista. Entenem l'exemple següent.

nombre d'1 milió

Exemple -

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

Sortida:

 The list1 and list2 are equal 

Explicació:

En l'exemple anterior, hem declarat que les dues llistes s'han de comparar entre si. Hem convertit aquestes llistes al conjunt i hem comparat cada element amb l'ajuda de l'operador ==. Tots els elements són iguals en ambdues llistes, llavors si el bloc s'executa i s'imprimeix el resultat.

punter de desreferència c

El mètode sort() amb l'operador ==

Python ordenar () La funció s'utilitza per ordenar les llistes. Els elements de la mateixa llista són la mateixa posició d'índex que significa; les llistes són iguals.

Nota: amb el mètode sort(), podem passar els elements de la llista en qualsevol ordre perquè estem ordenant la llista abans de la comparació.

Entenem el següent exemple:

Exemple -

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

Sortida:

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

La funció collection.counter().

El mòdul de recollida proporciona el comptador(), que comparen la llista de manera eficient. Emmagatzema les dades en format de diccionari : i compta la freqüència dels elements de la llista.

denominació de les convencions de Java

Nota: l'ordre dels elements de la llista no importa en aquesta funció.

Exemple -

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

Sortida:

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

El reduc() i el map()

El mapa () La funció accepta una funció i un objecte iterable de Python (llista, tupla, cadena, etc.) com a arguments i retorna un objecte de mapa. La funció s'implementa a cada element de la llista i com a resultat retorna un iterador.

A més, The reduir () El mètode implementa la funció donada a l'objecte iterable de forma recursiva.

Aquí, utilitzarem tots dos mètodes en combinació. El mapa () La funció implementaria la funció (pot ser una funció definida per l'usuari o lambda) a cada objecte iterable i al reduir () tenir cura de la funció que s'aplicaria de manera recursiva.

Nota: hem d'importar el mòdul functool per utilitzar la funció reduce().

Entenem l'exemple següent.

Exemple -

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

Sortida:

powershell inferior o igual a
 The list1 and list2 are not the same The list1 and list3 are the same 

En aquesta secció, hem tractat diversos mètodes per comparar dues llistes a Python.