logo

Как да сравним два списъка в Python

Python предоставя множество начини за сравняване на двата списъка. Сравнението е процесът, при който елементите от данни се проверяват спрямо друг елемент от списъка, независимо дали са еднакви или не.

файлова система в linux
 list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Output - The lists are equal 

Методите за сравняване на два списъка са дадени по-долу.

  • Функцията cmp().
  • Функцията set() и операторът ==
  • Функцията sort() и операторът ==
  • Функцията collection.counter().
  • Функцията reduce() и map().

Функцията cmp().

The Python Функцията cmp() сравнява двата обекта на Python и връща целочислените стойности -1, 0, 1 според сравнението.

Забележка - Не се използва във версия на Python 3.x.

Функцията set() и операторът ==

Python комплект() функция манипулирайте списъка в набора, без да се грижите за реда на елементите. Освен това използваме оператора за равенство (==), за да сравним елементите с данни в списъка. Нека разберем следния пример.

пример -

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

Изход:

 The list1 and list2 are equal 

Обяснение:

В горния пример сме декларирали двата списъка да бъдат сравнявани един с друг. Преобразувахме тези списъци в набора и сравнихме всеки елемент с помощта на оператора ==. Всички елементи са равни и в двата списъка, тогава ако блокът се изпълни и отпечата резултата.

Методът sort() с оператор ==

Python вид() функция се използва за сортиране на списъците. Елементите на същия списък са със същата индексна позиция, която означава; списъците са равни.

Забележка – В метода sort() можем да предадем елементите от списъка в произволен ред, защото сортираме списъка преди сравнение.

Нека разберем следния пример -

пример -

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

Изход:

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

Функцията collection.counter().

Модулът за събиране предоставя брояч (), които сравняват списъка ефективно. Той съхранява данните във формат на речник: и отчита честотата на елементите в списъка.

Забележка – Редът на елементите на списъка няма значение в тази функция.

пример -

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

Изход:

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

Намаляването() и map()

The карта() функцията приема функция и итерируем обект на Python (списък, кортеж, низ и т.н.) като аргументи и връща обект на карта. Функцията се прилага към всеки елемент от списъка и връща итератор като резултат.

Освен това, The намали () методът имплементира дадената функция към итерируемия обект рекурсивно.

Тук ще използваме двата метода в комбинация. The карта() функция ще имплементира функцията (тя може да бъде дефинирана от потребителя или ламбда функция) към всеки итерируем обект и намали () функция се грижи за това, което ще се прилага по рекурсивен начин.

Забележка - Трябва да импортираме модула functool, за да използваме функцията reduce().

Нека разберем следния пример.

пример -

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

Изход:

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

В този раздел разгледахме различни методи за сравняване на два списъка в Python.