Python
Задачи на списки Python
Списки в Python нужны почти в каждой учебной и рабочей задаче: хранить числа, строки, товары, пользователей, результаты проверки
В этой подборке задачи идут от простого прохода по списку к фильтрации, поиску, сортировке и разбиению данных на группы
Как работать с подборкой
Главная цель — научиться выбирать между проходом по списку, фильтрацией, поиском и сортировкой
Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым
После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру
Задачи с решениями
Задача 1. Сумма элементов списка
Условие: Дан список чисел, выведите сумму без встроенной функции sum
Подсказка: Пройдите по списку циклом и накопите total
Решение:
numbers = [3, 5, 2, 10]
total = 0
for number in numbers:
total += number
print(total)
Проверка: Сравните результат с sum(numbers)
Задача 2. Только положительные числа
Условие: Из списка чисел соберите новый список только с положительными значениями
Подсказка: Не удаляйте элементы из исходного списка во время обхода
Решение:
numbers = [-3, 0, 5, 8, -1]
positive = []
for number in numbers:
if number > 0:
positive.append(number)
print(positive)
Проверка: Результат должен быть [5, 8]
Задача 3. Максимум без max
Условие: Найдите максимальное число в непустом списке без функции max
Подсказка: Начните с первого элемента, затем сравнивайте остальные
Решение:
numbers = [4, 9, 1, 12, 7]
largest = numbers[0]
for number in numbers:
if number > largest:
largest = number
print(largest)
Проверка: Проверьте список из одного элемента
Задача 4. Среднее списка
Условие: Посчитайте среднее значение чисел в списке
Подсказка: Сначала проверьте, что список не пустой
Решение:
numbers = [10, 20, 30]
if numbers:
average = sum(numbers) / len(numbers)
print(average)
else:
print("Список пуст")
Проверка: Для [10, 20, 30] результат должен быть 20
Задача 5. Слова длиннее трех букв
Условие: Оставьте в новом списке только слова длиннее трех символов
Подсказка: len работает и со строками, и со списками
Решение:
words = ["кот", "python", "дом", "список"]
long_words = []
for word in words:
if len(word) > 3:
long_words.append(word)
print(long_words)
Проверка: Результат должен содержать python и список
Задача 6. Индексы отрицательных чисел
Условие: Найдите индексы всех отрицательных чисел
Подсказка: enumerate дает и индекс, и значение
Решение:
numbers = [4, -2, 0, -7, 9]
indexes = []
for index, number in enumerate(numbers):
if number < 0:
indexes.append(index)
print(indexes)
Проверка: Результат должен быть [1, 3]
Задача 7. Удалить дубликаты с сохранением порядка
Условие: Соберите список уникальных значений в исходном порядке
Подсказка: Для маленькой задачи можно проверять через 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]
Задача 8. Объединить два списка попарно
Условие: Даны имена и баллы, соберите список строк имя: балл
Подсказка: zip идет по двум спискам одновременно
Решение:
names = ["Анна", "Иван", "Оля"]
scores = [90, 75, 88]
result = []
for name, score in zip(names, scores):
result.append(f"{name}: {score}")
print(result)
Проверка: Проверьте списки разной длины и посмотрите поведение zip
Задача 9. Сортировка по длине слова
Условие: Отсортируйте список слов по длине
Подсказка: key=len передает сортировке правило сравнения
Решение:
words = ["python", "go", "javascript", "sql"]
words.sort(key=len)
print(words)
Проверка: Самое короткое слово должно оказаться первым
Задача 10. Найти первое подходящее число
Условие: Найдите первое число больше 10 и остановите цикл
Подсказка: break завершает цикл сразу после найденного значения
Решение:
numbers = [3, 8, 12, 5, 20]
for number in numbers:
if number > 10:
print(number)
break
Проверка: Результат должен быть 12, а не 20
Задача 11. Разделить числа на две группы
Условие: Разложите числа на четные и нечетные списки
Подсказка: Создайте два списка и добавляйте число в нужный
Решение:
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)
Проверка: Проверьте, что каждое число попало ровно в один список
Задача 12. Список квадратов
Условие: Создайте список квадратов чисел от 1 до 10
Подсказка: Сначала решите через обычный цикл, потом можно через list comprehension
Решение:
squares = []
for number in range(1, 11):
squares.append(number ** 2)
print(squares)
Проверка: Последний элемент должен быть 100
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы
Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается
Частые ошибки новичков
- читать решение, но не запускать его руками
- менять сразу несколько строк и не понимать, какая из них сломала код
- называть переменные одной буквой там, где можно написать понятное имя
- забывать проверять пустые строки, пустые списки и ноль
- путать вывод через print и возврат результата через return
- оставлять код рабочим только для одного заранее выбранного примера
Дополнительные задачи
Задача 13. Второй список квадратов
Условие: Из списка чисел создайте список квадратов
numbers = [1, 2, 3, 4]
squares = []
for number in numbers:
squares.append(number ** 2)
print(squares)
Проверка: Добавьте ноль и отрицательное число
Задача 14. Общие элементы двух списков
Условие: Найдите элементы, которые есть в обоих списках
first = ["python", "html", "css"]
second = ["js", "python", "sql"]
common = []
for item in first:
if item in second:
common.append(item)
print(common)
Проверка: Добавьте повтор и решите, должен ли он попадать в результат дважды