В Python списки играют роль контейнеров, которые могут хранить любые типы данных в виде коллекции. В 32-битной системе список может содержать до 536 870 912 элементов. Поэтому иногда бывает трудно определить, есть ли определенный элемент в списке.
Проверка наличия элемента в списке является одной из основных операций со списком в Python. Не удивительно, что подобные проверки можно осуществлять разными способами. В этой статье мы рассмотрим некоторые из них.
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по 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?».

