Поиск элемента в списке Python
Сегодня я расскажу, как проверить, содержит ли список элемент с помощью разных операторов в Python.
Используя цикл for
В качестве примера, я буду использовать список строк, содержащих несколько животных:
animals = ['Dog', 'Cat', 'Bird', 'Fish']
Простой и рудиментарный метод проверки, содержит ли список элемент: наш метод проходит через элемент и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем. Давайте для этого воспользуемся циклом for:
for animal in animals: if animal == 'Bird': print('Chirp!')
Chirp!
Используя оператор in
Теперь более лаконичным подходом было бы использование встроенного оператора in, но с оператором if вместо оператора for. В паре с if он возвращает True, если элемент существует в последовательности или нет. Синтаксис оператора in выглядит следующим образом:
element in list
Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:
if 'Bird' in animals: print('Chirp')
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')
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 по своей сути зацикливает список, чтобы проверить количество вхождений, и этот код приводит к запуску print:
Chirp
Заключение
В этой статье я рассмотрел несколько способов, как проверить, присутствует ли элемент в списке или нет. Я использовал цикл for, операторы in и not in, а также методы filter, any и count.
Найти элемент в списке по слову
Нужно узнать, в каком элементе списка spisok есть слово ‘мясо’. А потом нужно чтобы переменная element была равна числу, стоящее после знака ‘=’ элемента, который мы только что нашли(в котором есть слово ‘мясо’.
Отслеживать
задан 10 мар 2022 в 15:02
Козявка Деда Мороза Козявка Деда Мороза
29 4 4 бронзовых знака
А почему вы использовали список, a не словарь?
10 мар 2022 в 15:20
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Советую пользоваться не списком, а словарём.
spisok =
Тогда можно обратиться к ключу, например spisok[‘мясо’] выдаст 2.
В вашем случае со списком можно разве что так. Предположим, что нам надо найти «мясо».
spisok = ['колбаса=1', 'мясо=2', 'суп=3'] for i in spisok: text = i.split('=') if text[0] == 'мясо': number = text[1]
То есть делим по символу «=» и проверяем.
Python — как найти элемент списка?
Привет всем! Сегодня мы узнаем, как в Python найти элемент списка. Поехали!
В Python можно найти элемент списка с помощью метода index() или с помощью оператора in.
Например, посмотрим на следующий список цветов:
colors = ['красный', 'зеленый', 'синий']
Если мы хотим найти индекс цвета ‘зеленый’ в этом списке, мы можем сделать следующее:
colors = ['красный', 'зеленый', 'синий'] green_index = colors.index('зеленый') print(green_index) # выведет 1
Конечно, если мы попробуем найти, например, желтый цвет — то получим ошибку — ибо у нас нет обработки исключений. Я писал об этом здесь. В данном же случаем обработку исключений можно представить в следующем виде:
try: print(green_index) except ValueError: print("Элемент не существует в списке")
Теперь разберемся, как найти поиск элемента списка с помощью оператора in. Для примера берем все тот же список цветов Если мы хотим проверить, присутствует ли цвет ‘желтый’ в списке — попробуем следующий код:
colors = ['красный', 'зеленый', 'синий'] if 'желтый' in colors: print('Желтый имеется в списке цветов') else: print('Желтый не имеется в списке цветов')
Выведет ‘Желтый не имеется в списке цветов’, потому что ‘желтый’ не присутствует в списке colors.
А еще для поиска элемента списка можно использовать функцию enumerate(), которая позволяет итерироваться по списку и одновременно получать индекс нужного элемента. Используется эта функция в случае, если нужно сделать какую-либо операцию над элементом списка и одновременно знать его (этого элемента) индекс.
Для примера — возьмем код, который позволит вывести значение элемента списка и его индекс:
my_list = [1, 2, 3] for index, value in enumerate(my_list): print(f"Индекс: , Значение: ")
Надеюсь, теперь тема по поиску элемента с списке в Python стала более простой Как всегда — в случае возникновения вопросов пишите на почту или в Telegram.
Поиск значений в списке в Python
Часто в процессе работы с Python возникает необходимость найти конкретное значение в списке. Учитывая, что в Python список является одной из основных структур данных, такая задача встречается довольно часто. Например, может возникнуть необходимость проверить, есть ли определенный элемент в списке чисел или строк.
my_list = [1, 2, 3, 4, 5] item = 3
Наиболее простым и «pythonic» способом проверить наличие элемента в списке является использование оператора in . Если элемент присутствует в списке, оператор in вернет True , в противном случае — False .
if item in my_list: print("Desired item is in list")
Однако, этот метод не подскажет о местоположении элемента в списке. Для определения индекса элемента можно использовать метод .index() . Если элемент присутствует в списке, метод вернет индекс первого вхождения элемента, в противном случае будет сгенерировано исключение ValueError .
try: index = my_list.index(item) print(f"Item is at index ") except ValueError: print("Item is not in the list")
Важно помнить, что оба этих метода ищут только первое вхождение элемента. Если в списке присутствует несколько одинаковых элементов и нужно найти все их индексы, потребуется более сложный код.
indexes = [i for i, x in enumerate(my_list) if x == item] print(f"Item is at indexes ")
В этом коде используется функция enumerate() , которая возвращает пары индекс-значение для элементов списка, и генератор списка для создания нового списка с индексами.
Таким образом, Python предоставляет различные способы для поиска элементов в списке, каждый из которых подходит для своих специфических задач.