Практикум Python: задачи для самостоятельного изучения

Раздел: Python -> Учебные задачи

Задача: найти четные числа в списке

Дана последовательность чисел. Требуется извлечь все четные элементы. Рассмотрим различные подходы к решению.

Эффективное решение с list comprehension:

evens = [x for x in nums if x % 2 == 0]

алгоритм решения задачи python (алгоритм решения задачи на python)

Однострочная конструкция перебирает элементы nums и включает в новый список только те, у которых остаток от деления на 2 равен нулю. Преимущество: высокая скорость и лаконичность.

Как решить задачу с помощью цикла for и метода append?

evens = []
for x in nums:
    if x % 2 == 0:
        evens.append(x)

базовые задачи python (базовые задачи python)

Этот вариант нагляден для начинающих. Условие проверяется в каждой итерации, элементы добавляются по одному. Цикл явно показывает процесс отбора.

Как использовать функцию filter и лямбда-выражение?

evens = list(filter(lambda x: x % 2 == 0, nums))

задачи для обучения python (задачи для обучения python)

Функция filter применяет переданную функцию к каждому элементу и возвращает итератор. Преобразование в список даёт требуемый результат. Подходит для функционального стиля программирования.

Как получить нечетные числа, изменив условие?

odds = [x for x in nums if x % 2 != 0]

Использование != вместо == корректно для всех целых чисел, включая отрицательные.

Типичные ошибки: неверное применение оператора % для проверки четности. Для отрицательных чисел -2 % 2 даёт 0, поэтому условие x % 2 == 0 работает верно. Однако при проверке нечетности x % 2 == 1 не захватит -1, так как -1 % 2 в Python равно 1, но это исключение. Безопаснее использовать x % 2 != 0. Ещё одна проблема: попытка модифицировать исходный список во время итерации может привести к непредсказуемому поведению. В приведённых примерах создаётся новый список, что безопасно.

- задачи на модули python (задачи на модули в python)
- задачи на операторы в python (задачи на операторы в python)
- задачи на последовательности python (задачи на последовательности в python)

Расширенные примеры обработки списков

Ниже приведены варианты решения смежных задач, демонстрирующие применение изученных конструкций.

Пример 1. Нахождение индексов четных чисел

Пример
nums = [10, 21, 32, 43, 54]
indices = [i for i, v in enumerate(nums) if v % 2 == 0]
print(indices)
[0, 2, 4]

Функция enumerate возвращает пары (индекс, значение). Условие фильтрует только четные значения, формируя список индексов.

Пример 2. Генерация списка квадратов четных чисел

Пример
nums = [1, 2, 3, 4, 5, 6]
squares = [x**2 for x in nums if x % 2 == 0]
print(squares)
[4, 16, 36]

List comprehension позволяет совместить фильтрацию и преобразование: для каждого четного числа вычисляется квадрат.

Пример 3. Параллельный перебор двух списков с отбором

Пример
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
result = [x + y for x, y in zip(a, b) if x % 2 == 0]
print(result)
[8, 12]

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

Пример 4. Обработка строк: извлечение слов определённой длины

Пример
text = "Python обучение задача пример"
words = text.split()
long_words = [word for word in words if len(word) > 5]
print(long_words)
['обучение', 'задача', 'пример']

Разбиение строки на слова, затем фильтрация по длине. Аналогично можно применять к любым последовательностям.

Пример 5. Использование многомерного списка: фильтрация матрицы по строкам

Пример
matrix = [[1, 2], [3, 4], [5, 6]]
rows_with_even = [row for row in matrix if any(x % 2 == 0 for x in row)]
print(rows_with_even)
[[1, 2], [3, 4], [5, 6]]

Вложенный list comprehension с функцией any проверяет наличие хотя бы одного четного элемента в строке. Возвращаются все такие строки.

Задачи для обучения Python - comments

En
задачи для обучения python (python)