Рубрики
Без рубрики

Python: Проверьте, Содержит ли Массив/Список Элемент/Значение

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

Автор оригинала: Guest Contributor.

Python: Проверьте, Содержит ли Массив/Список Элемент/Значение

Вступление

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

animals = ['Dog', 'Cat', 'Bird', 'Fish']

Проверьте, Содержит Ли Список Элемент С Циклом for

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

for animal in animals:
    if animal == 'Bird':
        print('Chirp!')

Этот код приведет к:

Chirp!

Проверьте, Содержит Ли Список Элемент С Оператором in

Теперь более лаконичным подходом было бы использование встроенного оператора in , но с оператором if вместо оператора for . В паре с if он возвращает True если элемент существует в последовательности или нет. Синтаксис оператора in выглядит следующим образом:

element in list

Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:

if 'Bird' in animals: print('Chirp')

Этот фрагмент кода выведет следующее:

Chirp

Этот подход имеет ту же эффективность, что и цикл for , поскольку оператор in , используемый таким образом, вызывает функцию list.__contains__ , которая по своей сути циклически проходит через список – хотя это гораздо более читабельно.

Проверьте, Содержит Ли Список Элемент С Оператором not in

Напротив, мы можем использовать оператор not in , который является логической противоположностью оператору in . Он возвращает True , если элемент не присутствует в последовательности.

Давайте перепишем предыдущий пример кода, чтобы использовать оператор not in :

if 'Bird' not in animals: print('Chirp')

Запуск этого кода ничего не даст, так как Bird присутствует в нашем списке.

Но если мы попробуем это сделать с Волком :

if 'Wolf' not in animals: print('Howl')

Этот код приводит к:

Howl

Проверьте, Содержит Ли Список Элемент С Лямбдой

Еще один способ проверить, присутствует ли элемент, – отфильтровать все, кроме этого элемента, точно так же, как просеять песок и проверить, остались ли в конце какие-нибудь раковины. Встроенный метод filter() принимает в качестве аргументов лямбда-функцию и список. Здесь мы можем использовать лямбда-функцию для проверки нашей строки 'Bird' в списке animals .

Затем мы оборачиваем результаты в list () , так как метод filter() возвращает объект filter , а не результаты. Если мы упакуем объект filter в список, он будет содержать элементы, оставшиеся после фильтрации:

retrieved_elements = list(filter(lambda x: 'Bird' in x, animals))
print(retrieved_elements)

Этот код приводит к:

['Bird']

Сейчас этот подход не самый эффективный. Это довольно медленнее, чем предыдущие три подхода, которые мы использовали. Сам метод filter() эквивалентен функции генератора:

(item for item in iterable if function(item))

Замедление производительности этого кода, помимо всего прочего, происходит из-за того, что мы преобразуем результаты в список в конце концов, а также выполняем функцию для элемента на каждой итерации.

Проверьте, Содержит ли Список Элемент, Используя любой()

Еще один отличный встроенный подход заключается в использовании функции any () , которая является просто вспомогательной функцией, которая проверяет, есть ли any (по крайней мере 1) экземпляры элемента в списке. Он возвращает True или False в зависимости от наличия или отсутствия элемента:

if any(element in 'Bird' for element in animals):
    print('Chirp')

Поскольку это приводит к True , наш оператор print() называется:

Chirp

Этот подход также является эффективным способом проверки наличия элемента. Он так же эффективен, как и первые три.

Проверьте, Содержит Ли Список Элемент, Используя count()

Наконец, мы можем использовать функцию count () , чтобы проверить, присутствует ли элемент или нет:

list.count(element)

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

Давайте проверим результаты функции count() :

if animals.count('Bird') > 0:
    print("Chirp")

Функция count() по своей сути зацикливает список для проверки количества вхождений, и этот код приводит к:

Chirp

Вывод

В этом уроке мы рассмотрели несколько способов проверить, присутствует ли элемент в списке или нет. Мы использовали операторы for loop, in и not in , а также методы filter() , any() и count () .