logo

Як порівняти два списки в Python

Python надає кілька способів порівняння двох списків. Порівняння — це процес, коли елементи даних перевіряються з іншими елементами даних списку, незалежно від того, чи є вони однаковими чи ні.

 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() функція використовується для сортування списків. Ті самі елементи списку мають однакову позицію індексу, яку вони означають; списки рівні.

Примітка. У методі 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 

Функції reduce() і map()

The map() функція приймає функцію та ітерований об’єкт Python (список, кортеж, рядок тощо) як аргументи та повертає об’єкт карти. Функція реалізує кожен елемент списку та повертає ітератор як результат.

Крім того, The зменшити() метод рекурсивно реалізує дану функцію в ітерований об’єкт.

Тут ми використовуватимемо обидва методи разом. The map() функція реалізовуватиме функцію (вона може бути визначеною користувачем або лямбда-функцією) для кожного ітерованого об’єкта та зменшити() функція піклується про те, що застосовуватиметься рекурсивно.

Примітка. Нам потрібно імпортувати модуль 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.