Python

Практические задачи на списки Python: фильтрация, поиск и сортировка

Фильтрация, поиск и сортировка — три действия, которые постоянно встречаются при работе со списками

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

Как работать с подборкой

Материал помогает отработать списки глубже, чем простое добавление элементов через append

Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым

После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру

Задачи с решениями

Задача 1. Только положительные числа

Условие: Из списка чисел соберите новый список только с положительными значениями

Подсказка: Не удаляйте элементы из исходного списка во время обхода

Решение:

numbers = [-3, 0, 5, 8, -1]
positive = []

for number in numbers:
    if number > 0:
        positive.append(number)

print(positive)

Проверка: Результат должен быть [5, 8]

Задача 2. Максимум без max

Условие: Найдите максимальное число в непустом списке без функции max

Подсказка: Начните с первого элемента, затем сравнивайте остальные

Решение:

numbers = [4, 9, 1, 12, 7]
largest = numbers[0]

for number in numbers:
    if number > largest:
        largest = number

print(largest)

Проверка: Проверьте список из одного элемента

Задача 3. Слова длиннее трех букв

Условие: Оставьте в новом списке только слова длиннее трех символов

Подсказка: len работает и со строками, и со списками

Решение:

words = ["кот", "python", "дом", "список"]
long_words = []

for word in words:
    if len(word) > 3:
        long_words.append(word)

print(long_words)

Проверка: Результат должен содержать python и список

Задача 4. Индексы отрицательных чисел

Условие: Найдите индексы всех отрицательных чисел

Подсказка: enumerate дает и индекс, и значение

Решение:

numbers = [4, -2, 0, -7, 9]
indexes = []

for index, number in enumerate(numbers):
    if number < 0:
        indexes.append(index)

print(indexes)

Проверка: Результат должен быть [1, 3]

Задача 5. Удалить дубликаты с сохранением порядка

Условие: Соберите список уникальных значений в исходном порядке

Подсказка: Для маленькой задачи можно проверять через in

Решение:

numbers = [1, 2, 1, 3, 2, 4]
unique = []

for number in numbers:
    if number not in unique:
        unique.append(number)

print(unique)

Проверка: Результат должен быть [1, 2, 3, 4]

Задача 6. Объединить два списка попарно

Условие: Даны имена и баллы, соберите список строк имя: балл

Подсказка: zip идет по двум спискам одновременно

Решение:

names = ["Анна", "Иван", "Оля"]
scores = [90, 75, 88]
result = []

for name, score in zip(names, scores):
    result.append(f"{name}: {score}")

print(result)

Проверка: Проверьте списки разной длины и посмотрите поведение zip

Задача 7. Сортировка по длине слова

Условие: Отсортируйте список слов по длине

Подсказка: key=len передает сортировке правило сравнения

Решение:

words = ["python", "go", "javascript", "sql"]
words.sort(key=len)
print(words)

Проверка: Самое короткое слово должно оказаться первым

Задача 8. Найти первое подходящее число

Условие: Найдите первое число больше 10 и остановите цикл

Подсказка: break завершает цикл сразу после найденного значения

Решение:

numbers = [3, 8, 12, 5, 20]

for number in numbers:
    if number > 10:
        print(number)
        break

Проверка: Результат должен быть 12, а не 20

Задача 9. Разделить числа на две группы

Условие: Разложите числа на четные и нечетные списки

Подсказка: Создайте два списка и добавляйте число в нужный

Решение:

numbers = [1, 2, 3, 4, 5, 6]
even = []
odd = []

for number in numbers:
    if number % 2 == 0:
        even.append(number)
    else:
        odd.append(number)

print(even)
print(odd)

Проверка: Проверьте, что каждое число попало ровно в один список

Задача 10. Список квадратов

Условие: Создайте список квадратов чисел от 1 до 10

Подсказка: Сначала решите через обычный цикл, потом можно через list comprehension

Решение:

squares = []

for number in range(1, 11):
    squares.append(number ** 2)

print(squares)

Проверка: Последний элемент должен быть 100

Задача 11. Топ-3 числа

Условие: Отсортируйте числа по убыванию и возьмите первые три

Подсказка: sorted возвращает новый список, а reverse=True меняет порядок

Решение:

numbers = [8, 1, 10, 3, 7, 12]
top = sorted(numbers, reverse=True)[:3]
print(top)

Проверка: Результат должен быть [12, 10, 8]

Задача 12. Поиск товара по названию

Условие: Найдите товар в списке словарей по названию

Подсказка: Если нашли товар, можно выйти из цикла через break

Решение:

products = [
    {"title": "Книга", "price": 700},
    {"title": "Курс", "price": 3000},
]
target = "Курс"
found = None

for product in products:
    if product["title"] == target:
        found = product
        break

print(found)

Проверка: Проверьте название, которого нет в списке

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Как проверять свои решения

Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы

Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается

Частые ошибки новичков

  • читать решение, но не запускать его руками
  • менять сразу несколько строк и не понимать, какая из них сломала код
  • называть переменные одной буквой там, где можно написать понятное имя
  • забывать проверять пустые строки, пустые списки и ноль
  • путать вывод через print и возврат результата через return
  • оставлять код рабочим только для одного заранее выбранного примера

Дополнительные задачи

Задача 13. Сортировка товаров по цене

Условие: Отсортируйте список товаров от дешевых к дорогим

products = [
    {"title": "Клавиатура", "price": 2500},
    {"title": "Мышь", "price": 900},
    {"title": "Монитор", "price": 12000},
]

products_sorted = sorted(products, key=lambda product: product["price"])
print(products_sorted)

Проверка: Добавьте два товара с одинаковой ценой

Задача 14. Поиск по части строки

Условие: Найдите все товары, где в названии есть введенный текст

query = "мо".lower()
titles = ["Монитор", "Мышь", "Коврик", "Модем"]
found = []

for title in titles:
    if query in title.lower():
        found.append(title)

print(found)

Проверка: Проверьте пустой запрос и запрос без совпадений

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x