Привет! Мы уже научились добавлять и удалять элементы из списков. Но как найти нужный элемент? Как узнать, есть ли он в списке? И как подсчитать, сколько раз он встречается?
В этой статье мы разберём:
index()— поиск индекса элементаcount()— подсчёт количества вхожденийin— проверка наличия элементаnot in— проверка отсутствия элемента
- Что нужно знать перед началом
- Основная часть
- Оператор in
- Оператор not in
- Метод index()
- index() возвращает индекс первого вхождения элемента.
- Метод count()
- Сравнение методов
- Примеры из реальной жизни
- Задачи для закрепления
- Нюансы и подводные камни
- index() ищет только первое вхождение
- Поиск с помощью цикла
- count() для вложенных списков
- Частые ошибки и как их избежать
- Ошибка 1: index() на несуществующий элемент
- Ошибка 2: Путаница между count() и len()
- Ошибка 3: Поиск в пустом списке
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание списков (статьи 1–3 в этом подменю)
Совет: Эти методы — основа работы с данными. Без них нельзя представить ни одну программу.
Основная часть
Оператор in
in проверяет, есть ли элемент в списке. Возвращает True или False.
fruits = ["яблоко", "банан", "вишня"]
print("банан" in fruits) # True
print("апельсин" in fruits) # FalseСовет:
in— самый быстрый способ проверить наличие элемента.
if "банан" in fruits:
print("Банан есть в списке")Оператор not in
not in проверяет, что элемента нет в списке.
fruits = ["яблоко", "банан", "вишня"]
print("апельсин" not in fruits) # True
print("банан" not in fruits) # Falseif "апельсин" not in fruits:
print("Апельсина нет в списке")Метод index()
index() возвращает индекс первого вхождения элемента.
fruits = ["яблоко", "банан", "вишня", "банан"]
position = fruits.index("банан")
print(position) # 1Важно: Если элемента нет — возникает ошибка
ValueError.
# fruits.index("апельсин") # ValueError: 'апельсин' is not in listБезопасное использование:
if "банан" in fruits:
position = fruits.index("банан")
print(f"Индекс банана: {position}")Совет:
index()можно использовать с параметрамиstartиstop.
numbers = [1, 2, 3, 2, 4, 2, 5]
position = numbers.index(2, 3) # Поиск с индекса 3
print(position) # 5Метод count()
count() подсчитывает, сколько раз элемент встречается в списке.
fruits = ["яблоко", "банан", "вишня", "банан", "банан"]
count = fruits.count("банан")
print(count) # 3numbers = [1, 2, 3, 2, 4, 2, 5]
count_2 = numbers.count(2)
print(count_2) # 3Совет:
count()не вызывает ошибку, если элемента нет — просто возвращает0.
print(fruits.count("апельсин")) # 0Сравнение методов
| Метод | Что делает | Возвращает | Ошибка |
|---|---|---|---|
in | Проверяет наличие | True/False | Нет |
not in | Проверяет отсутствие | True/False | Нет |
index() | Возвращает индекс | Индекс | ValueError |
count() | Подсчитывает вхождения | Число | Нет |
Примеры из реальной жизни
Пример 1. Проверка входа пользователя:
allowed_users = ["admin", "user1", "user2"]
username = "admin"
if username in allowed_users:
print("Доступ разрешён")
else:
print("Доступ запрещён")Пример 2. Подсчёт голосов:
votes = ["за", "против", "за", "за", "против", "воздержался"]
for_votes = votes.count("за")
against_votes = votes.count("против")
abstained = votes.count("воздержался")
print(f"За: {for_votes}, Против: {against_votes}, Воздержались: {abstained}")Пример 3. Поиск всех позиций элемента:
numbers = [1, 2, 3, 2, 4, 2, 5]
target = 2
positions = []
for i, num in enumerate(numbers):
if num == target:
positions.append(i)
print(positions) # [1, 3, 5]Задачи для закрепления
Задача 1. Проверь, есть ли число 5 в списке [1, 2, 3, 4, 5].
Задача 2. Найди индекс элемента «вишня» в списке fruits = ["яблоко", "банан", "вишня"].
Задача 3. Подсчитай, сколько раз встречается число 3 в списке [1, 2, 3, 2, 3, 4, 3].
Задача 4. Напиши безопасную функцию, которая возвращает индекс элемента, или -1, если элемента нет.
Задача 5. Найди все индексы элемента «банан» в списке ["яблоко", "банан", "вишня", "банан", "дыня"].
Ответы:
Задача 1.
numbers = [1, 2, 3, 4, 5]
print(5 in numbers) # TrueЗадача 2.
fruits = ["яблоко", "банан", "вишня"]
print(fruits.index("вишня")) # 2Задача 3.
numbers = [1, 2, 3, 2, 3, 4, 3]
print(numbers.count(3)) # 3Задача 4.
def safe_index(lst, item):
if item in lst:
return lst.index(item)
return -1
print(safe_index([1, 2, 3], 2)) # 1
print(safe_index([1, 2, 3], 5)) # -1Задача 5.
fruits = ["яблоко", "банан", "вишня", "банан", "дыня"]
target = "банан"
positions = []
for i, fruit in enumerate(fruits):
if fruit == target:
positions.append(i)
print(positions) # [1, 3]Нюансы и подводные камни
index() ищет только первое вхождение
numbers = [1, 2, 3, 2, 4, 2]
print(numbers.index(2)) # 1 (только первый)Поиск с помощью цикла
Если нужно найти все вхождения, используй цикл или list comprehension.
numbers = [1, 2, 3, 2, 4, 2]
indices = [i for i, x in enumerate(numbers) if x == 2]
print(indices) # [1, 3, 5]count() для вложенных списков
nested = [[1, 2], [3, 4], [1, 2]]
print(nested.count([1, 2])) # 2Частые ошибки и как их избежать
Ошибка 1: index() на несуществующий элемент
Используй in перед вызовом index().
Ошибка 2: Путаница между count() и len()
len()— длина всего спискаcount()— количество вхождений элемента
Ошибка 3: Поиск в пустом списке
empty = []
print(empty.index(5)) # ValueErrorПроверяй список на пустоту перед поиском.
Шпаргалка
| Что нужно | Как пишется |
|---|---|
| Проверить наличие | item in list |
| Проверить отсутствие | item not in list |
| Найти индекс (первый) | list.index(item) |
| Найти индекс с start | list.index(item, start) |
| Подсчитать вхождения | list.count(item) |
| Безопасный поиск | if item in list: index = list.index(item) |
Заключение / Выводы
Сегодня мы узнали:
inиnot in— проверка наличияindex()— поиск индекса элементаcount()— подсчёт вхождений- Безопасные способы поиска








