← Все вопросы
Как применить функцию к каждому элементу списка и собрать новый список?
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].
Ваш ответ
Войдите, чтобы ответить на вопрос.