Как сравнить элементы в списке python
Перейти к содержимому

Как сравнить элементы в списке python

  • автор:

Python Compare Two Lists

In this article, we will learn how python compare two lists.

Comparing 2 lists may mean many different things. For example:

  • Check if all elements of a list are present in same order in another list.
  • Check if all elements of a list are present in another list in any order.
  • Getting the intersection element of 2 lists.
  • Getting the common elements of 2 lists.
  • In case of string element compare ignoring case.

We will learn all possible cases of list comparison in Python. We will also learn different methods for the same purpose.

Table Of Contents

Compare if 2 lists are equal with same order

To compare something in Python, we use == operator or is operator.

  1. == (equal to) — It compares 2 values and returns True if both values are equal.
  2. is (identical to) — It compares 2 variables and returns True if both variables are pointing to the same object. This means the memory addresses of both variables are the same.

We are going to use == because when using is we are comparing the memory address of 2 variables which will be different in the case of 2 different lists.

Comparing 2 lists for same order of items

Method 1: == Operator

We can use the == operator to compare 2 lists. If both lists have the same element in the same order then it will return True .

Method 2: Using loop

We can also use for loop to compare 2 lists.

Since we have to check only if the element at any position in list1 is equal to the element at the same position in list2, so we need not use any nested loop. We can compare it in a single iteration.

Compare if 2 lists are equal regardless of order

When you compare 2 lists regardless of the order of the elements in the list, it becomes a little complex task. Now you can't just equate 2 lists and check if they are equal.

To compare the lists now you have 2 approaches:

  1. Sort both the lists and then compare them.
  2. Compare each element of the list1 with each element of the list2 and check if they exist in both lists.

Comparing 2 lists for a different order of items

Method 1: Sort both the lists

Sort both the lists. This will make the list to be in the same order if they have the same elements.

Now simply compare both the lists using the == operator.

python compare two list using sort

Method 2: Compare Individual Element

Another approach is to compare each element of the list1 with each element of list2 and check if they exist in both lists.

Before comparing elements first check if both the lists have the same length. If they don't have the same length then they are simply not equal.

We are going to create a function here that will take 2 lists as arguments and do the comparison.

Get intersection of 2 lists

Finding the intersection of 2 lists means finding all the elements that are present in both lists.

There are many ways to find the intersection of 2 lists. The most common way to get intersections is using a set data structure.

Method 1: Find intersection using set

A set consists of unique elements. So if take a set of a list then it will return unique elements of the list.

To find the intersection of the lists you can take a set of both the lists and use & operator to find the intersection.

Both set(a) & set(b) or set(b) & set(a) will return same result.

You can also use the intersection() method of the set class to find intersections.

Method 2: Find intersection using list comprehension

Another way to find the intersection of 2 lists is using list comprehension.

In list comprehension, we will use the if condition to check if an element exists in both lists.

Alternatively, you can use for loop to find intersections.

The loop will also follow the same logic as a list comprehension.

Get the difference of 2 lists

Finding the difference of elements from the 1st list to the 2nd list means finding all the elements that are present in the 1st list but not in the 2nd list.

To get the difference between 2 lists you can use a set data structure and use the — operator to find the difference.

The difference between list1 to list2 and list2 to list1 will be different.

You can also use the difference() method of the set class to find differences.

Compare if 2 lists are equal ignoring case

Suppose your list contans string values and you want to compare if 2 lists are equal ignoring case.

To do this you can use the lower() method of the str class to convert all the string values to lower case and then use the == operator to compare (If elements are not in the same order then you can use the methods discussed above).

Conclusion

In this article, we have discussed multiple ways how Python compare two lists. We have seen cases like comparing 2 lists, finding intersections, finding differences, and comparing 2 lists ignoring the case.

Stay Ahead, Learn More

Ezoic

report this ad

Как сравнить элементы двух списков в Python?

Метод cmp() сравнивает элементы двух списков в Python. Если элементы имеют одинаковый тип, он выполняет сравнение и возвращает результат. Если элементы разных типов, он проверяет, являются ли они числами. Если они являются числами, он выполняет приведение типов при необходимости и сравнивает их.

Если один из элементов является числом, то другой элемент является «большим» (числа являются «самыми маленькими»). В противном случае типы сортируются в алфавитном порядке по имени.

Если мы достигли конца одного из списков, более длинный список будет «больше». Если мы исчерпаем оба списка и будем использовать одни и те же данные, результатом будет равенство, что означает, что возвращается 0.

Списки в Python: что это такое и как с ними работать

Рассказали всё самое важное о списках для тех, кто только становится «змееустом».

Иллюстрация: Оля Ежак для Skillbox Media

Дмитрий Зверев

Сегодня мы подробно поговорим о, пожалуй, самых важных объектах в Python — списках. Разберём, зачем они нужны, как их использовать и какие удобные функции есть для работы с ними.

В статье есть всё, что начинающим разработчикам нужно знать о списках в Python:

Что такое списки

Список (list) — это упорядоченный набор элементов, каждый из которых имеет свой номер, или индекс, позволяющий быстро получить к нему доступ. Нумерация элементов в списке начинается с 0: почему-то так сложилось в C, а C — это база. Теорий на этот счёт много — на «Хабре» даже вышло большое расследование 🙂

В одном списке одновременно могут лежать данные разных типов — например, и строки, и числа. А ещё в один список можно положить другой и ничего не сломается:

Все элементы в списке пронумерованы. Мы можем без проблем узнать индекс элемента и обратиться по нему.

Списки называют динамическими структурами данных, потому что их можно менять на ходу: удалить один или несколько элементов, заменить или добавить новые.

Когда мы создаём объект list, в памяти компьютера под него резервируется место. Нам не нужно переживать о том, сколько выделяется места и когда оно освобождается, — Python всё сделает сам. Например, когда мы добавляем новые элементы, он выделяет память, а когда удаляем старые — освобождает.

Под капотом списков в Python лежит структура данных под названием «массив». У массива есть два важных свойства: под каждый элемент он резервирует одинаковое количество памяти, а все элементы следуют друг за другом, без «пробелов».

Однако в списках Python можно хранить объекты разного размера и типа. Более того, размер массива ограничен, а размер списка в Python — нет. Но всё равно мы знаем, сколько у нас элементов, а значит, можем обратиться к любому из них с помощью индексов.

И тут есть небольшой трюк: списки в Python представляют собой массив ссылок. Да-да, решение очень элегантное — каждый элемент такого массива хранит не сами данные, а ссылку на их расположение в памяти компьютера!

Как создать список в Python

Чтобы создать объект list, в Python используют квадратные скобки — []. Внутри них перечисляют элементы через запятую:

Мы создали список a и поместили в него три числа, которые разделили запятыми. Давайте выведем его с помощью функции print():

Python выводит элементы в квадратных скобках, чтобы показать, что это list, а также ставит запятые между элементами.

Мы уже говорили, что списки могут хранить данные любого типа. В примере ниже объект b хранит: строку — cat, число — 123 и булево значение — True:

Также в Python можно создавать вложенные списки:

Мы получили объект, состоящий из двух чисел — 1 и 2 — и вложенного list с двумя элементами — [3, 4].

Операции со списками

Если просто хранить данные в списках, то от них будет мало толку. Поэтому давайте рассмотрим, какие операции они позволяют выполнить.

Индексация

Доступ к элементам списка получают по индексам, через квадратные скобки []:

Мы обратились ко второму элементу и вывели его с помощью print().

Здесь важно помнить две вещи:

  • у каждого элемента есть свой индекс;
  • индексы начинаются с 0.

Давайте ещё поиграем с индексами:

В последней строке мы обратились к несуществующему индексу, поэтому Python выдал ошибку.

Кроме того, Python поддерживает обращение к нескольким элементам сразу — через интервал. Делается это с помощью двоеточия — :.

Двоеточие позволяет получить срез списка. Полная форма оператора выглядит так: начальный_индекс:конечный_индекс:шаг.

Здесь мы указываем, с какого индекса начинается «срез», на каком заканчивается и с каким шагом берутся элементы — по умолчанию 1. Единственный нюанс с конечным индексом: хоть мы и можем подумать, что закончим именно на нём, на самом деле Python остановится на элементе с индексом конечный_индекс — 1. Почему создатели языка решили так сделать? Кто их знает.

В примере выше мы начали с индекса 0, а закончили на 1, потому что последний индекс не включается. Наш шаг был 1, то есть мы прошлись по каждому элементу.

Здесь мы шли по элементам с шагом 2. Начали с индекса 1 — это первое число внутри скобок, а закончили на индексе 6, не включая его. Двигались с шагом 2, то есть через один элемент, и получили [2, 4].

Протестируйте этот тип индексации сами, чтобы лучше понять, как работают срезы в Python.

Изменение элементов

Списки — это динамическая структура данных. А значит, мы можем менять их уже после создания.

Например, можно заменить один элемент на другой:

Мы обратились к элементу по индексу и заменили его на число 4. Всё прошло успешно, список изменился.

Но нужно быть осторожными, потому что может случиться такое:

Сначала мы создали список a с двумя элементами — 1 и 2. Затем объявили переменную b и присвоили ей содержимое a. Потом заменили первый элемент в a и… удивились, что он заменился и в b.

Проблема в том, что a — это ссылка на область в памяти компьютера, где хранится первый элемент списка, а также на следующий его элемент. Вот как всё это устроено в памяти компьютера:

Каждый элемент списка имеет четыре секции: свой адрес, данные, адрес следующего элемента и адрес предыдущего. Если мы получили доступ к какому-то элементу, мы без проблем можем двигаться вперёд-назад по этому списку и менять его данные.

Поэтому, когда мы присвоили списку b список a, то на самом деле присвоили ему ссылку на первый элемент — по сути, сделав их одним списком.

Объединение списков

Иногда полезно объединить два списка. Чтобы это сделать, используют оператор +:

Мы создали два списка — a и b. Затем переприсвоили a новым списком, который стал объединением старого a и b.

Разложение списка

Элементы списка можно присвоить отдельным переменным:

Здесь из списка a поочерёдно достаются элементы, начиная с индекса 0, и присваиваются переменным. И в отличие от присвоения одного списка другому, в этом случае Python создаст три отдельных целых числа, которые никак не будут связаны с элементами списка, и присвоит их трём переменным. Поэтому, если мы изменим, например, переменную d2, со списком a ничего не случится.

Перебор элементов

Мы можем перебирать элементы списка с помощью циклов for и while.

Так выглядит перебор через for:

Здесь мы перебираем каждый элемент списка и выводим их с помощью функции print().

А вот так выглядит перебор через цикл while:

Этот перебор чуть сложнее, потому что мы используем дополнительную переменную i, чтобы обращаться к элементам списка. Также мы использовали встроенную функцию len(), чтобы узнать размер нашего списка. А ещё в условии цикла while мы указали знак «меньше» (<), потому что индексация элементов идёт до значения количество элементов списка — 1. Как и в прошлом примере, все элементы по очереди выводятся с помощью функции print().

Сравнение списков

Python поддерживает сравнение списков. Два списка считаются равными, если они содержат одинаковые элементы. Функция возвращает булево значение — True или False:

Получили, что списки равны.

В некоторых языках равенство ещё проверяется и по тому, ссылаются ли переменные на один и тот же объект. Обычно это делается через оператор ===. В Python это можно сделать через оператор is, который проверяет, имеют ли две переменные один и тот же адрес в памяти:

Получили, что две переменные ссылаются на один и тот же адрес в памяти.

Встроенные функции для списков Python

В Python есть четыре функции, которые позволяют узнавать длину списка, сортировать его и возвращать максимальное и минимальное значение.

len()

Возвращает длину списка:

sorted()

Возвращает отсортированный список:

min() и max()

Возвращают наименьший и наибольший элемент списка:

Методы списков Python

Чтобы проще управлять элементами списка, в стандартной библиотеке Python есть набор популярных методов для списков. Разберём основные из них.

append()

Добавляет новый элемент в конец списка:

extend()

Добавляет набор элементов в конец списка:

Внутрь метода extend() нужно передать итерируемый объект — например, другой list или строку.

Вот так метод extend() добавит строку:

Заметьте, что строка добавилась посимвольно.

insert()

Добавляет новый элемент по индексу:

Сначала мы передаём индекс, по которому хотим вставить новый элемент, а затем сам элемент.

remove()

Удаляет элемент из списка:

Метод удаляет только первое вхождение элемента. Остальные остаются нетронутыми.

Если элемента нет в списке, Python вернёт ошибку и программа прервётся:

Ошибка говорит, что элемента нет в списке.

clear()

Удаляет все элементы из списка и делает его пустым:

index()

Возвращает индекс элемента списка в Python:

Если элемента нет в списке, выведется ошибка:

pop()

Удаляет элемент по индексу и возвращает его как результат:

Мы не передали индекс в метод, поэтому он удалил последний элемент списка. Если передать индекс, то получится так:

count()

Считает, сколько раз элемент повторяется в списке:

sort()

Если нам нужно отсортировать в обратном порядке — от большего к меньшему, — в методе есть дополнительный параметр reverse:

reverse()

Переставляет элементы в обратном порядке:

copy()

Для того чтобы быстро находить нужные методы во время работы, пользуйтесь этой шпаргалкой:

Метод Что делает
a.append(x) Добавляет элемент x в конец списка a. Если x — список, то он появится в a как вложенный
a.extend(b) Добавляет в конец a все элементы списка b
a.insert(i, x) Вставляет элемент x на позицию i
a.remove(x) Удаляет в a первый элемент, значение которого равно x
a.clear() Удаляет все элементы из списка a и делает его пустым
a.index(x) Возвращает индекс элемента списка
a.pop(i) Удаляет элемент по индексу и возвращает его
a.count(x) Считает, сколько раз элемент повторяется в списке
a.sort() Сортирует список. Чтобы отсортировать элементы в обратном порядке, нужно установить дополнительный аргумент reverse=True
a.reverse() Возвращает обратный итератор списка a
a.copy() Создаёт поверхностную копию списка. Для создания глубокой копии используйте метод deepcopy из модуля copy

Что запомнить

Лучше не учить это всё, а применять на практике. А ещё лучше — попытаться написать каждый метод самостоятельно, не используя никакие встроенные функции.

Сколько бы вы ни писали код на Python, всё равно придётся подсматривать в документацию и понимать, какой метод что делает. И для этого есть разные удобные сайты — например, полный список методов можно посмотреть на W3Schools.

Как сравнить элементы в списке python

Операции сравнения для списков

Для списков существуют особые операторы сравнивания:

оператор in(not in) оценивает, входит ли заданный элемент в последовательность;

оператор is(is not) применяется для изменяемых последовательностей и определяет, действительно ли две последовательности указывают на одну и ту же область памяти(то есть являются идентичными).

Результат сравнения может быть присвоен переменной логического типа(принимает значения true и false). В отличие от языка Си, в Python не допускаивается присваивание при сравнении, что исключает ошибку, распространённую в языке Си и связанную с употреблением =, вместо ==.

Сравнение списков несколько отличается от сравнения простых числовых значений. Во-первых, списки должны быть одинакового типа. Во-вторых сравнение идёт в лексикографическом порядке, т.е оцениваются вначале первые элементы последовательностей, если они не равны, то далее возвращается результат(>;<;!=), иначе оценивается следующая пара элементов. Последовательности будут равны только в том случае, если все их элементы будут соответственно равны. Кроме этого, более длинная последовательность будет всегда больше более короткой.Строки сравниваются, учитывая порядок символов в строках в таблице ASCII. Приведём примеры сравнения последовательностей:

(1, 2, 3) == (1.0, 2.0, 3.0)

При этом, допускается сравнивание элементов различного типа(хотя по-моему это сильно усложняет понимание программы), при этом строка всегда больше списка, константный список больше строки и.т.д. Различные числовые типы сравниваются путём приведения их к типу с точкой.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *