Menu
Coddy logo textTech

Использование агрегации данных

Часть раздела Logic & Flow путешествия по Python на Coddy — урок 53 из 78.

Генераторы списков предоставляют краткий способ создания новых списков на основе существующих итерируемых объектов. Вы можете интегрировать функции агрегации данных, такие как sum(), min() и max(), непосредственно внутри генераторов списков для выполнения вычислений над элементами нового списка в процессе его создания.

Вычисление суммы квадратов:

numbers = [1, 2, 3, 4, 5]
sum_of_squares = sum([n * n for n in numbers])
print(sum_of_squares)
# Результат: 55

В этом примере списковое включение [n * n for n in numbers] создает список квадратов, а функция sum() вычисляет сумму этих квадратов.

Поиск минимума преобразованных значений:

numbers = [-3, -1, 0, 1, 3]
min_absolute = min([abs(n) for n in numbers])
print(min_absolute)
# Вывод: 0

Здесь списковое включение [abs(n) for n in numbers] создает список абсолютных значений, а функция min() находит минимальное значение в этом списке.

Поиск максимума среди отфильтрованных значений:

numbers = [1, 2, 3, 4, 5, 6]
max_even = max([n for n in numbers if n % 2 == 0])
print(max_even)
# Вывод: 6

В этом примере списковое включение [n for n in numbers if n % 2 == 0] создает список четных чисел, а функция max() находит максимальное значение в этом списке.

challenge icon

Задание

Легко

Напишите функцию sum_positive_evens, которая принимает список чисел в качестве входных данных. Используйте списковое включение (list comprehension) для фильтрации положительных четных чисел, а затем используйте sum() для вычисления их суммы. Верните результат.

Пример входных данных:

numbers = [-10, -5, 0, 2, 4, 7, 10, 12]

Пример выходных данных:

28

Шпаргалка

Списковые включения можно комбинировать с агрегатными функциями, такими как sum(), min() и max(), для выполнения вычислений над преобразованными или отфильтрованными данными.

Вычислить сумму квадратов:

numbers = [1, 2, 3, 4, 5]
sum_of_squares = sum([n * n for n in numbers])
# Output: 55

Найти минимум преобразованных значений:

numbers = [-3, -1, 0, 1, 3]
min_absolute = min([abs(n) for n in numbers])
# Output: 0

Найти максимум отфильтрованных значений:

numbers = [1, 2, 3, 4, 5, 6]
max_even = max([n for n in numbers if n % 2 == 0])
# Output: 6

Попробуйте сами

def sum_positive_evens(numbers):
    # Напишите здесь код
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow