Вступление
В этом руководстве мы рассмотрим, как проверить, содержит ли список элемент или значение в 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()