Автор оригинала: 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 ()
.