Как сравнить два списка в Python
Python предоставляет несколько способов сравнения двух списков. Сравнение – это процесс, когда элементы данных сравниваются с другим элементом данных списка, независимо от того, совпадают они или нет.
Ниже приведены методы сравнения двух списков в Python.
Функция cmp()
Функция Python cmp() сравнивает два объекта Python и возвращает целочисленные значения -1, 0, 1 согласно сравнению.
Примечание. Не используется в версии Python 3.x.
Set() функция и оператор ==
Функция Python set() преобразовывает список в набор, не заботясь о порядке элементов. Кроме того, мы используем оператор равенства (==) для сравнения элементов данных в списке. Разберем на следующем примере.
В приведенном выше примере мы объявили два списка для сравнения друг с другом. Мы преобразовали эти списки в набор и сравнили каждый элемент с помощью оператора ==. Все элементы равны в обоих списках, тогда, если блок выполнен, распечатывается результат.
Метод sort() с оператором ==
Функция Python sort() используется для сортировки списков. Элементы одного и того же списка имеют одинаковую позицию индекса, это означает, что списки равны.
Примечание. В методе sort() мы можем передавать элементы списка в любом порядке, потому что мы сортируем список перед сравнением.
Разберем метод в следующем примере.
Collection.counter()
Модуль сбора представляет counter(), который эффективно сравнивает список. Он хранит данные в формате словаря <value>:<frequency> и подсчитывает частоту элементов списка.
Примечание. Порядок элементов списка не имеет значения в этой функции.
Reduce() и map()
Функция map() принимает функцию и повторяемый объект Python (список, кортеж, строку и т. д.) в качестве аргументов и возвращает объект. Функция реализуется для каждого элемента списка и в результате возвращает итератор.
Кроме того, метод reduce() рекурсивно реализует данную функцию итерируемому объекту.
Здесь мы будем использовать оба метода в комбинации. Функция map() будет реализовывать функцию (она может быть определяемая пользователем или лямбда-функция) для каждого итеративного объекта, а функция reduce() позаботится о том, чтобы применялся рекурсивный образ.
Примечание. Чтобы использовать функцию reduce(), нужно импортировать модуль functool.
How to Compare Two Lists in Python
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
Introduction
When programming in, or learning, Python you might need to determine whether two or more lists are equal. When you compare lists for equality, you’re checking whether the lists are the same length and whether each item in the list is equal. Lists of different lengths are never equal.
This article describes how to use the following Python features to compare lists:
- sort() method or the sorted() function with the == operator
- set() function with the == operator
- reduce() and map() functions with the == operator
- collection.Counter() class with the == operator
- list comprehension
Using the sort() Method or the sorted() Function to Compare Lists
You can use the sort() method or the sorted() function to sort lists with the purpose of comparing them for equality. The sort() method sorts the list in place, while the sorted() function returns a new list. After sorting, lists that are equal will have the same items in the same index positions. The == operator compares the lists, item by item (element-wise comparison).
The order of the original list items is not important, because the lists are sorted before comparison.
Note: You can sort only lists with items of the same data type.
sort() Method Example
The following example demonstrates how to use the sort() method to sort and compare lists for equality:
The preceding example code sorts each list, compares l1 to l3 and prints the result, and then compares l1 to l2 and prints the result.
sorted() Function Example
The following example demonstrates how use the sorted() function to sort and compare lists for equality:
The preceding example code returns a sorted version of each list, compares l1 to l3 and prints the result, and then compares l1 to l2 and prints the result.
Using the reduce() and map() Functions to Compare Lists
You can use the Python map() function along with the functools.reduce() function to compare the data items of two lists. When you use them in combination, the map() function applies the given function to every element and the reduce() function ensures that it applies the function in a consecutive manner.
The map() function accepts a function and an iterable as arguments. The map() function applies the given function to each item of the iterable and then returns a map object (iterator) as the result.
The functools.reduce() function also accepts a function and an iterable as arguments. The functools.reduce() function applies the given function to every element of the iterable recursively. Initially, functools.reduce() applies the function on the first and the second items and returns the result, and then applies the function on the result and the third item, and continues until the list has no items left.
When you use them in combination, the map() function applies the given function to every element and the reduce() function ensures that it applies the function in a consecutive manner.
The order of the list items is important when you use the reduce() and map() functions. Lists with the same items in different order will not return true when compared for equality. If required, you can sort the lists first.
The following example demonstrates how to use the reduce() and map() functions to compare lists for equality:
The preceding example code compares l1 to l2 and then compares l1 to l3 .
Using the set() Function to Compare Lists
You can use the set() function to create set objects using the given lists and then compare the sets for equality using the == operator.
The order of the original list items is not important, because the == operator returns true when each set contains identical items in any order.
Note: Duplicate list items appear only once in a set.
The following example demonstrates how to create sets from lists and compare the sets for equality:
The preceding example code creates sets a and b from lists l1 and l2 and then compares the sets and prints the result.
Using the collections.Counter() Class to Compare Lists
The collections.Counter() class can be used to compare lists. The counter() function counts the frequency of the items in a list and stores the data as a dictionary object in the format value:frequency . If two lists have the same dictionary output, you can infer that the lists are the same.
The order of the original list items isn’t important when you use the Counter class to compare lists.
The following example demonstrates how to create Counter objects from the given lists and compare them for equality:
The preceding example code creates Counter objects for lists l1 and l2 , compares them, and prints the result. The code repeats for lists l1 and l3 .
Using List Comprehension to Compare Lists
You can use list comprehension to compare two lists. For more information about list comprehensions, refer to Understanding List Comprehensions in Python 3.
The order of the original list items isn’t important when you use list comprehension to compare lists.
The following example demonstrates how to use a list comprehension to compare lists:
The preceding example code sets a pointer element x to the lists l1 and l2 , then checks if the item pointed by the pointer element is present in the lists. If the result, res is an empty list, then you can infer that the lists are equal, since there are no items that appear in only one of the lists.
Conclusion
This article described a few different ways to compare lists for equality in Python. Continue your learning with more Python tutorials.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Как сравнивать списки в Python
При программировании или изучении Python вам может понадобиться определить, равны ли два или несколько списков. При сравнении списков вы проверяете, одинаковой ли длины списки и соответствуют ли их элементы. Списки разной длины никогда не бывают равными.
В этом мануале мы разберем, как применять следующие функции Python для сравнения списков:
- Метод sort() или функция sorted() с оператором ==
- Функция set() с оператором ==
- Функции reduce() и map() с оператором ==
- Класс collection.Counter() с оператором ==
- Генератор списков
Метод sort() и функция sorted()
Сравнить списки можно с помощью метода sort() или функции sorted(). Метод sort() сортирует старый список, а функция sorted() возвращает новый. После сортировки равные списки будут иметь одинаковые элементы в одинаковых индексных позициях. Оператор == сравнивает списки поэлементно.
Порядок элементов исходного списка не важен, поскольку списки сортируются перед сравнением.
Примечание: Можно сортировать только списки, в которых элементы имеют одинаковый тип данных.
Пример sort()
В следующем примере показано, как с помощью метода sort() сортировать и сравнивать списки:
Получим следующий вывод:
Код предыдущего примера сортирует каждый список, сравнивает l1 с l3 и выводит результат, а затем сравнивает l1 с l2 и выводит результат.
Пример функции sorted()
В следующем примере показано, как с помощью функции sorted() сортировать и сравнить списки:
Вывод будет следующим:
Код предыдущего примера возвращает отсортированную версию каждого списка, сравнивает l1 с l3 и выводит результат, а затем сравнивает l1 с l2 и выводит результат.
Сравнение списков с помощью функций reduce() и map()
Сравнить элементы двух списков можно с помощью функции map() вместе с функцией functools.reduce(). При их комбинации map() применяет заданную функцию к каждому элементу, а функция reduce() обеспечивает последовательное применение функции.
Функция map() принимает в качестве аргументов функцию и итератор. Затем map() применяет заданную функцию к каждому элементу итерации,а затем возвращает объект map (итератор) в качестве результата.
functools.reduce() в качестве аргументов также принимает функцию и итерируемый объект. Она рекурсивно применяет заданную функцию к каждому элементу итерации. Сначала functools.reduce() применяет функцию к первому и второму элементам и возвращает результат, а затем применяет ее к результату и третьему элементу и так продолжается до тех пор, пока в списке не останется ни одного элемента.
При их комбинации map() применит заданную функцию к каждому элементу, а reduce() обеспечит последовательное применение функции.
Порядок элементов списка важен для reduce() и map(). Списки с одинаковыми элементами в разном порядке не считаются одинаковыми. При необходимости списки можно сначала отсортировать.
В следующем примере показано, как проверить списки на равенство с помощью функций reduce() и map():
Получим следующий вывод:
В предыдущем примере код сравнивает l1 с l2, а затем сравнивает l1 с l3.
Сравнение списков с помощью функции set()
С помощью функции set() можно создать объекты set на основе заданных списков, а затем проверить эти наборы на равенство с помощью оператора ==.
Порядок элементов исходного списка не важен, поскольку оператор == возвращает true, если каждый набор содержит одинаковые элементы в любом порядке.
Примечание. Дублирующиеся элементы списка появляются в наборе только один раз.
Следующий пример демонстрирует, как создавать наборы из списков и сравнивать их:
Код в предыдущем примере создает наборы a и b из списков l1 и l2, затем сравнивает их и выводит результат.
Сравнение списков с помощью класса collections.Counter()
С помощью класса collections.Counter() можно сравнивать списки. Функция counter() подсчитывает частоту элементов в списке и сохраняет данные в виде словаря в формате value:frequency. Если два списка выдают два одинаковых словаря, можно сделать вывод, что списки одинаковы.
Порядок элементов исходного списка не важен при сравнении с помощью класса Counter.
Следующий пример демонстрирует, как создать объекты Counter из заданных списков и сравнить их:
Вывод будет следующим:
Код в предыдущем примере создаст объекты Counter для списков l1 и l2, сравнит их и выведет результат. Код повторяется для списков l1 и l3.
Сравнение с помощью генератора списков
При сравнении списков с помощью генераторов порядок элементов исходного списка не важен.
Следующий пример показывает, как сравнить списки с помощью генератора:
Код в предыдущем примере устанавливает элемент-указатель x в списки l1 и l2, а затем проверяет, присутствует ли в списках элемент, на который указывает элемент-указатель. Если результат res — пустой список, то можно сделать вывод, что списки равны, поскольку нет элементов, которые присутствуют только в одном из списков.
Вывод будет следующим:
Подводим итоги
В этом мануале мы разобрали несколько разных способов проверки списков на равенство в Python.
Как сравнить два списка в Python
В этой статье мы разберемся с различными способами сравнения двух списков в Python. Мы часто сталкиваемся с ситуациями, когда нам нужно сравнить значения элементов данных, хранящихся в любой структуре, например, в списке, кортеже, строке и т.д.
Сравнение – это метод проверки элементов данных одного списка на предмет равенства с элементами данных другого списка.
Методы сравнения двух списков
Мы можем использовать любой из следующих методов для сравнения:
- Функции reduce() и map().
- Функция collection.counter().
- sort() вместе с оператором ==.
- set() вместе с оператором ==.
- Функция difference().
1. Функции Python reduce() и map()
Мы можем использовать функцию map() вместе с функцией functools.reduce() для сравнения элементов данных двух списков.
Метод map() принимает в качестве аргументов функцию и итерацию, например список, кортеж, строку и т.д.
Он применяет переданную функцию к каждому элементу итерации, а затем возвращает объект карты, то есть итератор, в качестве результата.
Метод functools.reduce() применяет переданную функцию к каждому элементу итерируемого ввода рекурсивным образом.
Первоначально он применит функцию к первому и второму элементам и вернет результат. Тот же процесс будет продолжаться для каждого из элементов, пока в списке не останется элементов.
Как комбинация, функция map() применяет функцию ввода к каждому элементу, а функция reduce() гарантирует, что она применяет функцию последовательно.
2. Метод Python collection.counter()
Метод collection.counter() можно использовать для эффективного сравнения списков. Функция counter() подсчитывает частоту элементов в списке и сохраняет данные в виде словаря в формате <значение>: <частота>.
Если два списка имеют одинаковый вывод словаря, мы можем сделать вывод, что списки одинаковы.
Примечание. Порядок в списке не влияет на метод counter().
3. Метод Python sort() и оператор ==
Мы можем объединить метод sort() с оператором == для сравнения двух списков.
Метод sort() используется для сортировки входных списков с целью, что если два входных списка равны, то элементы будут находиться в одних и тех же позициях индекса.
Примечание. Порядок в списке не влияет на этот метод, потому что мы будем сортировать списки перед сравнением.
Кроме того, оператор == используется для сравнения списка элемент за элементом.
4. Метод Python set() и оператор ==
Метод set() манипулирует элементами данных итерации до отсортированного набора элементов данных, не принимая во внимание порядок элементов.
Кроме того, оператор == используется для поэлементного сравнения элементов данных списка.
5. Понимание пользовательского списка
Мы можем использовать List в Python для сравнения двух списков.
В приведенном выше коде мы устанавливаем элемент указателя «x» на список l1 и l3. Далее мы проверяем, присутствует ли элемент, на который указывает элемент-указатель, в списках.