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

В Python списки играют роль контейнеров, которые могут хранить любые типы данных в виде коллекции. В 32-битной системе список может содержать до 536 870 912 элементов. Поэтому иногда бывает трудно определить, есть ли определенный элемент в списке.

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

От редакции Pythonist: если хотите побольше узнать о списках, почитайте статью «Списки в Python: полное руководство для начинающих».

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

Самый удобный способ проверить, содержит ли список определенный элемент, — это воспользоваться оператором in. Этот оператор возвращает True, если элемент есть, и False, если его нет. При этом список не сортируется.

В приведенном ниже примере показано, как применяется оператор in в условном блоке:

name_list = ["Adam", "Dean", "Harvey", "Mick", "John"]

if "John" in name_list:
    print("'John' is found in the list")
else:
    print("'John' is not found in the list")

if 'Ned' in name_list:
    print("'Ned' is found in the list")
else:
    print("'Ned' is not found in the list")


# Результат:
# 'John' is found in the list
# 'Ned' is not found in the list

От редакции Pythonist: об операторе in, его паре not in и прочих операторах можно почитать в статье «Операторы в Python».

Использование цикла for для проверки наличия элемента в списке

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

name_list = ["Adam", "Dean", "Harvey", "Mick", "John"]
for name in name_list:
    if name == 'Adam':
        print("Found the element")


# Результат:
# Found the element

Как проверить, есть ли элемент в списке, при помощи функции any()

Встроенная функция any() проверяет, оценивается ли хоть один элемент в последовательности как True.

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

Приведенный ниже пример показывает, как работает функция any(). Мы проверяем, содержит ли строка «Adam lives in New York» какое-нибудь из имен, хранящихся в списке из первой строки.

name_list = ["Adam", "Dean", "Harvey", "Mick", "John"]
string = "Adam lives in New York"

print("The original list is: " + str(name_list))
print("The original string is: " + string)

result = any(item in string for item in name_list)

print("Does the string contain any name from the list: " + str(result))


# Результат:
# The original list is: ['Adam', 'Dean', 'Harvey', 'Mick', 'John']
# The original string is: Adam lives in New York
# Does the string contain any name from the list: True

Проверяем наличие элемента в списке при помощи метода count()

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

name_list = ["Adam", "Dean", "Harvey", "Mick", "John"]
result = name_list.count("Harvey")
if result > 0:
    print("Harvey exists in the list")
else:
    print("Harvey does not exist in the list")


# Результат:
# Harvey exists in the list

Итоги

В этой статье мы рассмотрели на примерах, как проверить, есть ли элемент в списке. Для проверок мы использовали оператор in, цикл for, методы any() и count().

Перевод статьи «Python list contains: How to check if an item exists in list?».