← Все вопросы

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

Задан 12 месяцев назад365 просмотров2 ответа
7

У меня есть функция to_celsius(f) и список температур в Фаренгейтах. Хочу применить функцию ко всем элементам и получить новый список результатов. Какой самый понятный способ в Python?

2 ответа

14

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

def to_celsius(f):
    return round((f - 32) * 5 / 9, 1)

fahr = [32, 212, 98.6]
celsius = [to_celsius(t) for t in fahr]
# [0.0, 100.0, 37.0]

Альтернатива — list(map(to_celsius, fahr)), она здесь даже компактна, потому что функция уже готова и lambda не нужна. Оба варианта правильные, comprehension чуть нагляднее.

6

[to_celsius(t) for t in fahr].

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект