Время чтения 3 мин.
Существует несколько способов проверки наличия элемента в списке в Python:
- Использование метода index() для поиска индекса элемента в списке.
- Использование оператора in для проверки наличия элемента в списке.
- Использование метода count() для подсчета количества вхождений элемента.
- Использование функции any().
- Функция filter() создает новый список элементов на основе условий.
- Применение цикла for.
Содержание
- Способ 1: Использование метода index()
- Способ 2: Использование «оператора in»
- Способ 3: Использование функции count()
- Синтаксис
- Пример
- Способ 4: использование понимания списка с any()
- Способ 5: Использование метода filter()
- Способ 6: Использование цикла for
Способ 1: Использование метода index()
Чтобы найти элемент в списке Python, вы можете использовать метод list index(). Список index() — это встроенный метод, который ищет элемент в списке и возвращает его индекс.
Если один и тот же элемент присутствует более одного раза, метод возвращает индекс первого вхождения элемента.
Индекс в Python начинается с 0, а не с 1. Таким образом, через индекс мы можем найти позицию элемента в списке.
streaming = [‘netflix’, ‘hulu’, ‘disney+’, ‘appletv+’] index = streaming.index(‘disney+’) print(‘The index of disney+ is:’, index) |
Выход
The index of disney+ is: 2 |
Метод list.index() принимает единственный аргумент, элемент, и возвращает его позицию в списке.
Способ 2: Использование «оператора in»
Используйте оператор in, чтобы проверить, есть ли элемент в списке.
main_list = [11, 21, 19, 46] if 19 in main_list: print(«Element is in the list») else: print(«Element is not in the list») |
Выход
Вы можете видеть, что элемент «19» находится в списке. Вот почему оператор in возвращает True.
Если вы проверите элемент «50», то оператор in вернет False и выполнит оператор else.
Способ 3: Использование функции count()
Метод list.count() возвращает количество вхождений данного элемента в списке.
Синтаксис
Метод count() принимает единственный элемент аргумента: элемент, который будет подсчитан.
Пример
main_list = [11, 21, 19, 46] count = main_list.count(21) if count > 0: print(«Element is in the list») else: print(«Element is not in the list») |
Выход
Мы подсчитываем элемент «21», используя список в этой функции example.count(), и если он больше 0, это означает, что элемент существует; в противном случае это не так.
Способ 4: использование понимания списка с any()
Any() — это встроенная функция Python, которая возвращает True, если какой-либо элемент в итерируемом объекте имеет значение True. В противном случае возвращается False.
main_list = [11, 21, 19, 46] output = any(item in main_list for item in main_list if item == 22) print(str(bool(output))) |
Выход
Вы можете видеть, что в списке нет «22». Таким образом, нахождение «22» в списке вернет False функцией any(). Если функция any() возвращает True, элемент в списке существует.
Способ 5: Использование метода filter()
Метод filter() перебирает элементы списка, применяя функцию к каждому из них.
Функция filter() возвращает итератор, который перебирает элементы, когда функция возвращает значение True.
main_list = [11, 21, 19, 46] filtered = filter(lambda element: element == 19, main_list) print(list(filtered)) |
Выход
В этом примере мы используем функцию filter(), которая принимает функцию и перечисляет ее в качестве аргумента.
Мы использовали лямбда-функцию, чтобы проверить, совпадает ли входной элемент с любым элементом из списка, и если это так, он вернет итератор. Чтобы преобразовать итератор в список в Python, используйте функцию list().
Мы использовали функцию list() для преобразования итератора, возвращаемого функцией filter(), в список.
Способ 6: Использование цикла for
Вы можете узнать, находится ли элемент в списке, используя цикл for в Python.
main_list = [11, 21, 19, 46] for i in main_list: if(i == 46): print(«Element Exists») |
Выход
В этом примере мы прошли список элемент за элементом, используя цикл for, и если элемент списка совпадает с входным элементом, он напечатает «Element exists».
В 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?».
The list is an important container in python as it stores elements of all the data types as a collection. Knowledge of certain list operations is necessary for day-day programming. This article discusses the Fastest way to check if a value exists in a list or not using Python.
Example:
list = test_list = [1, 6, 3, 5, 3, 4] Input: 3 # Check if 3 exist or not. Output: True
Input: 7 # Check if 7 exist or not. Output: False
Method 1: Naive Method
In the Naive method, one easily uses a loop that iterates through all the elements to check the existence of the target element. This is the simplest way to check the existence of the element in the list. Python is the most conventional way to check if an element exists in a list or not. This particular way returns True if an element exists in the list and False if the element does not exist in the list. The list need not be sorted to practice this approach of checking.
Example 1: Check if an element exists in the list using the if-else statement
Python3
lst
=
[
1
,
6
,
3
,
5
,
3
,
4
]
i
=
7
if
i
in
lst:
print
(
"exist"
)
else
:
print
(
"not exist"
)
Time Complexity: O(1)
Auxiliary Space: O(n), where n is total number of elements.
Example 2: Check if an element exists in the list using a loop
Python3
test_list
=
[
1
,
6
,
3
,
5
,
3
,
4
]
for
i
in
test_list:
if
(i
=
=
4
):
print
(
"Element Exists"
)
Output:
Element Exists
Time Complexity: O(n)
Auxiliary Space: O(1)
Example 3: Check if an element exists in the list using “in”
Python3
test_list
=
[
1
,
6
,
3
,
5
,
3
,
4
]
if
(
4
in
test_list):
print
(
"Element Exists"
)
Output:
Element Exists
Example 4: Check if an element exists in the list using any() function
Python3
test_list
=
[
1
,
6
,
3
,
5
,
3
,
4
]
result
=
any
(item
in
test_list
for
item
in
test_list)
print
(
"Does string contain any list element : "
+
str
(
bool
(result)))
Output:
Does string contain any list element : True
Method 2: Check if an element exists in the list using count()
We can use the in-built python List method, count(), to check if the passed element exists in the List. If the passed element exists in the List, the count() method will show the number of times it occurs in the entire list. If it is a non-zero positive number, it means an element exists in the List. Demonstrating to check the existence of elements in the list using count().
Python3
test_list
=
[
10
,
15
,
20
,
7
,
46
,
2808
]
print
(
"Checking if 15 exists in list"
)
exist_count
=
test_list.count(
15
)
if
exist_count >
0
:
print
(
"Yes, 15 exists in list"
)
else
:
print
(
"No, 15 does not exists in list"
)
Output:
Checking if 15 exists in list Yes, 15 exists in list
Method 3: Check if an element exists in the list using sort + bisect_left + set
Converting the list into the set and then using it can possibly be more efficient than only using it. But having efficiency for a plus also has certain negatives. One among them is that the order of the list is not preserved, and if you opt to take a new list for it, you would require to use extra space. Another drawback is that set disallows duplicity and hence duplicate elements would be removed from the original list. In the conventional binary search way of testing element existence, hence list has to be sorted first and hence does not preserve the element ordering. bisect_left() returns the first occurrence of the element to be found and has worked similarly to lower_bound() in C++ STL.
Note: The bisect function will only state the position of where to insert the element but not the details about if the element is present or not.
Demonstrating to check existence of element in list using set() + in and sort() + bisect_left()
Python3
from
bisect
import
bisect_left ,bisect
test_list_set
=
[
1
,
6
,
3
,
5
,
3
,
4
]
test_list_bisect
=
[
1
,
6
,
3
,
5
,
3
,
4
]
print
(
"Checking if 4 exists in list ( using set() + in) : "
)
test_list_set
=
set
(test_list_set)
if
4
in
test_list_set :
print
(
"Element Exists"
)
print
(
"Checking if 4 exists in list ( using sort() + bisect_left() ) : "
)
test_list_bisect.sort()
if
bisect_left(test_list_bisect,
4
)!
=
bisect(test_list_bisect,
4
):
print
(
"Element Exists"
)
else
:
print
(
"Element doesnt exist"
)
Output:
Checking if 4 exists in list ( using set() + in) : Element Exists Checking if 4 exists in list ( using sort() + bisect_left() ) : Element Exists
Method 4: Using find() method
Python3
test_list
=
[
10
,
15
,
20
,
7
,
46
,
2808
]
print
(
"Checking if 15 exists in list"
)
x
=
list
(
map
(
str
,test_list))
y
=
"-"
.join(x)
if
y.find(
"15"
) !
=
-
1
:
print
(
"Yes, 15 exists in list"
)
else
:
print
(
"No, 15 does not exists in list"
)
Output
Checking if 15 exists in list Yes, 15 exists in list
Method 5: Using Counter() function
Below is the implementation:
Python3
from
collections
import
Counter
test_list
=
[
10
,
15
,
20
,
7
,
46
,
2808
]
frequency
=
Counter(test_list)
if
(frequency[
15
] >
0
):
print
(
"Yes, 15 exists in list"
)
else
:
print
(
"No, 15 does not exists in list"
)
Output
Yes, 15 exists in list
Method 6: Using try-except block
One additional approach to check if an element exists in a list is to use the index() method. This method returns the index of the first occurrence of the element in the list, or throws a ValueError if the element is not present in the list. To use this method, you can wrap the call to index() in a try-except block to catch the ValueError and return False if it occurs:
Python3
def
element_exists(lst, element):
try
:
lst.index(element)
return
True
except
ValueError:
return
False
test_list
=
[
1
,
6
,
3
,
5
,
3
,
4
]
print
(element_exists(test_list,
3
))
print
(element_exists(test_list,
7
))
Time complexity: O(n), where n is the length of the list. The index() method iterates through the list to find the element, so the time complexity is linear.
Auxiliary Space: O(1). This approach does not require any additional space.
Approach 7: Using Set
Time complexity: O(1) average case as checking for an element in a set takes constant time on average.
Space complexity: O(n) as it creates a new set from the list to store its elements.
Python3
def
check_element_exists_set(lst, target):
return
target
in
set
(lst)
test_list
=
[
1
,
6
,
3
,
5
,
3
,
4
]
target
=
3
print
(
"Exists using set: "
, check_element_exists_set(test_list, target))
Output
Exists using set: True
Last Updated :
22 Feb, 2023
Like Article
Save Article
На чтение 4 мин Просмотров 79.5к. Опубликовано 17.03.2021
Сегодня я расскажу, как проверить, содержит ли список элемент с помощью разных операторов в Python.
Содержание
- Используя цикл for
- Используя оператор in
- Используя оператор not in
- С помощью лямбда функции
- Используя функцию any
- Используя метод count
- Заключение
Используя цикл for
В качестве примера, я буду использовать список строк, содержащих несколько животных:
animals = ['Dog', 'Cat', 'Bird', 'Fish']
Простой и рудиментарный метод проверки, содержит ли список элемент: наш метод проходит через элемент и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем. Давайте для этого воспользуемся циклом for:
for animal in animals: if animal == 'Bird': print('Chirp!')
Вывод программы:
Используя оператор in
Теперь более лаконичным подходом было бы использование встроенного оператора in, но с оператором if вместо оператора for. В паре с if он возвращает True, если элемент существует в последовательности или нет. Синтаксис оператора in выглядит следующим образом:
Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:
if 'Bird' in animals: print('Chirp')
Вывод программы:
Этот подход имеет ту же эффективность, что и цикл for, поскольку оператор in, используемый таким образом, вызывает функцию list.__contains__, которая по своей сути циклически проходит через список — хотя это гораздо читабельнее.
Используя оператор not in
Вы можете использовать оператор not in, который является логической противоположностью оператору in. Он возвращает True, если элемент не присутствует в последовательности.
Давайте перепишем предыдущий пример кода, чтобы использовать оператор not in:
if 'Bird' not in animals: print('Chirp')
Запуск этого кода ничего не даст, так как Bird присутствует в нашем списке.
Но если мы попробуем это с Wolf:
if 'Wolf' not in animals: print('Howl')
Вывод программы:
С помощью лямбда функции
Еще один способ проверить, присутствует ли элемент — отфильтровать все, кроме этого элемента, точно так же, как просеять песок и проверить, остались ли в конце какие-нибудь раковины. Встроенный метод filter() принимает в качестве аргументов лямбда-функцию и список. Здесь мы можем использовать лямбда-функцию для проверки нашей строки «Bird» в списке animals.
Затем мы оборачиваем результаты в list(), так как метод filter() возвращает объект filter, а не результаты. Если мы упакуем объект filter в список, он будет содержать элементы, оставшиеся после фильтрации:
retrieved_elements = list(filter(lambda x: 'Bird' in x, animals)) print(retrieved_elements)
Вывод программы:
Сейчас этот подход не самый эффективный. Это довольно медленнее, чем предыдущие три подхода, которые мы использовали. Сам метод 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 сработает:
Этот подход также является эффективным способом проверки наличия элемента. Он ничем не уступает первым трём проверкам!
Используя метод count
Наконец, мы можем использовать функцию count, чтобы проверить, присутствует ли элемент или нет:
Эта функция возвращает вхождение данного элемента в последовательность. Если он больше 0, мы можем быть уверены, что данный элемент находится в списке.
Давайте проверим результаты функции count:
if animals.count('Bird') > 0: print("Chirp")
Функция count по своей сути зацикливает список, чтобы проверить количество вхождений, и этот код приводит к запуску print:
Заключение
В этой статье я рассмотрел несколько способов, как проверить, присутствует ли элемент в списке или нет. Я использовал цикл for, операторы in и not in, а также методы filter, any и count.
Автор оригинала: Guest Contributor.
Вступление
В этом уроке мы рассмотрим как проверить, содержит ли список элемент или значение в Python . Мы будем использовать список строк, содержащих несколько животных:
animals = ['Dog', 'Cat', 'Bird', 'Fish']
Проверьте, Содержит Ли Список Элемент С Циклом for
Простой и рудиментарный метод проверки, содержит ли список элемент, проходит через него и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем. Давайте используем для этого цикл for
:
for animal in animals: if animal == 'Bird': print('Chirp!')
Этот код приведет к:
Проверьте, Содержит Ли Список Элемент С Оператором in
Теперь более лаконичным подходом было бы использование встроенного оператора in
, но с оператором if
вместо оператора for
. В паре с if
он возвращает True
если элемент существует в последовательности или нет. Синтаксис оператора in
выглядит следующим образом:
Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:
if 'Bird' in animals: print('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')
Этот код приводит к:
Проверьте, Содержит Ли Список Элемент С Лямбдой
Еще один способ проверить, присутствует ли элемент, – отфильтровать все, кроме этого элемента, точно так же, как просеять песок и проверить, остались ли в конце какие-нибудь раковины. Встроенный метод filter()
принимает в качестве аргументов лямбда-функцию и список. Здесь мы можем использовать лямбда-функцию для проверки нашей строки 'Bird'
в списке animals
.
Затем мы оборачиваем результаты в list ()
, так как метод filter()
возвращает объект filter
, а не результаты. Если мы упакуем объект filter
в список, он будет содержать элементы, оставшиеся после фильтрации:
retrieved_elements = list(filter(lambda x: 'Bird' in x, animals)) print(retrieved_elements)
Этот код приводит к:
Сейчас этот подход не самый эффективный. Это довольно медленнее, чем предыдущие три подхода, которые мы использовали. Сам метод 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()
называется:
Этот подход также является эффективным способом проверки наличия элемента. Он так же эффективен, как и первые три.
Проверьте, Содержит Ли Список Элемент, Используя count()
Наконец, мы можем использовать функцию count ()
, чтобы проверить, присутствует ли элемент или нет:
Эта функция возвращает вхождение данного элемента в последовательность. Если он больше 0, мы можем быть уверены, что данный элемент находится в списке.
Давайте проверим результаты функции count()
:
if animals.count('Bird') > 0: print("Chirp")
Функция count()
по своей сути зацикливает список для проверки количества вхождений, и этот код приводит к:
Вывод
В этом уроке мы рассмотрели несколько способов проверить, присутствует ли элемент в списке или нет. Мы использовали операторы for
loop, in
и not in
, а также методы filter()
, any()
и count ()
.