Python: Пересечение двух списков
В этом учебнике вы узнаете, как использовать Python для нахождения пересечения между двумя списками. Пересечение означает нахождение общих элементов между двумя списками. Типично, пересечение является основанным на множествах, что означает, что значения не дублируются. Вы узнаете несколько наивных методов для нахождения пересечения между двумя списками Python, включая циклы for и генераторы списков, использование метода .intersection()
множества и использование numpy.
Содержание
Использование цикла for Python для нахождения пересечения между двумя списками
Использование цикла for
Python — это простой и интуитивный способ найти пересечение между двумя списками. Преимущество понимания здесь приходит с ущербом производительности при списках гораздо большего размера.
Что мы будем делать, так это пройдем по каждому элементу в списке и посмотрим, существует ли он в другом. Если да, то мы добавим его в новый список. Если нет, то мы ничего не будем делать.
Давайте посмотрим, как этот код будет выглядеть:
В следующем разделе вы узнаете, как преобразовать этот цикл for
в генератор списков Python.
Использование генераторов списков для нахождения пересечения между двумя списками Python
В многих случаях цикл for
Python можно преобразовать в генератор списков. Преимущество этого — легкость написания кода. Генераторы списков Python имеют некоторые ключевые преимущества:
Вам не нужно инициировать новый пустой список
Код обычно занимает только одну строку, а не несколько строк
Эссенциально, алгоритм, которому мы будем следовать, такой же, как и цикл for
: мы пройдем по каждому элементу и посмотрим, существует ли он в другом списке. Если да, то мы добавим его в наш новый список.
Давайте посмотрим, как это будет выглядеть в Python:
Подобно методу с циклом for
, по мере увеличению размера списков, это может столкнуться с некоторыми проблемами производительности. Здесь на сцену выходит следующий метод. В следующем разделе вы узнаете, как использовать методы множеств Python для нахождения пересечения между двумя списками.
Использование операций множеств Python для нахождения пересечения между двумя списками
Множества Python похожи на списки, но имеют ряд ключевых отличий. В то время как списки упорядочены, множества неупорядочены; в то время как списки могут содержать дублирующиеся элементы, множества не могут.
Множества также имеют ряд полезных методов. В примере ниже мы будем использовать метод .intersection()
, чтобы сгенерировать множество элементов, которые существуют в обоих множествах.
Давайте посмотрим, как выглядит наш код:
Давайте посмотрим, что мы сделали:
Мы преобразовали оба списка в множества
Затем мы применили метод
.intersection()
Наконец, мы преобразовали конечное множество обратно в список
В следующем разделе вы узнаете, как использовать оператор &
для нахождения пересечения между двумя списками.
Хотите узнать, как использовать функцию Python zip()
для итерации по двум спискам? Этот учебник научит вас точно, что делает функция zip()
и покажет вам несколько креативных способов использования функции.
Использование оператора &
для нахождения пересечения списка Python
&
для нахождения пересечения списка PythonВ примере выше вы узнали, как использовать метод множества, метод .intersection()
, для нахождения пересечения между двумя списками. Мы также можем использовать булевый метод, используя оператор &
, для нахождения пересечения между двумя множествами.
Использование этого оператора оценивает, существуют ли элементы в обоих множествах, и возвращает элементы, которые соответствуют критериям.
Давайте посмотрим, как это будет выглядеть:
В следующем примере вы узнаете, как использовать numpy для проверки существования элементов в двух списках.
Использование Numpy для нахождения пересечения между двумя списками
Numpy — это полезная библиотека, которая использует объект, похожий на список, называемый np.array
. Эти массивы похожи на списки Python, но позволяют нам работать с методами массивов numpy. Один из этих методов — это метод intersect1d()
, который, ну, позволяет нам находить пересечение между одномерными массивами.
Давайте посмотрим, как это будет выглядеть:
Давайте исследуем, что мы сделали здесь:
Мы передали наши два списка в метод
np.intersect1d()
Это возвращает
np.array
, который включает только пересечение между двумя спискамиНаконец, мы преобразовали этот массив обратно в список
Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с этим учебником, который научит вас пяти различных способов узнать, существует ли ключ в словаре Python, включая как вернуть значение по умолчанию.
Заключение
В этой статье вы узнали, как использовать Python для нахождения пересечения между двумя списками. Вы узнали, что самый простой способ сделать это — использовать операции множеств Python, в частности метод .intersection()
. Вы также узнали некоторые наивные реализации, включая использование циклов for и генераторов списков. Эти методы, хотя и не всегда самые быстрые в написании, позволяют вам получить сильное понимание того, как работают эти алгоритмы. Наконец, вы узнали, как использовать numpy для нахождения пересечения между двумя списками.
Чтобы узнать больше о методе .intersection()
множества, ознакомьтесь с официальной документацией здесь.
Last updated