Python: проверьте, содержит ли массив / список элемент / значение

Введение В этом руководстве мы рассмотрим, как проверить, содержит ли список элемент или значение в Python. Мы будем использовать список строк, содержащий несколько животных: animals = ['Dog', 'Cat', 'Bird', 'Fish'] Проверить, содержит ли список элемент с циклом for. Простой и элементарный метод проверки наличия list содержит элемент, который проходит через него и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем. Давайте использовать для этого цикл for: для животных в животных: if animal == 'Bird

Вступление

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

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

Проверьте, содержит ли список элемент с циклом for

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

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

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

 Chirp! 

Проверьте, содержит ли список элемент с оператором in

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

 element in list 

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

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

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

 Chirp 

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

Проверьте, содержит ли список элемент, не в операторе

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

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

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

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

Но если мы попробуем это с Wolf :

 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 in и not in , а также методы filter() , any() и count()

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus