Лямбды и функция map()
В простейшем из всех возможных случаев функция map()
:
map(function, list)
принимает два аргумента:
- функцию;
- список.
Приведенное выше описание чрезвычайно упрощено:
- второй аргумент
map()
может быть любым объектом, по которому можно итерироваться (например, кортеж или просто генератор); map()
может принимать более двух аргументов.
Функция map()
применяет функцию, переданную ее первым аргументом, ко всем элементам второго аргумента и возвращает итератор, дающий все последующие результаты функции. Вы можете использовать полученный итератор в цикле или преобразовать его в список с помощью функции list()
.
Вы можете увидеть роль лямбды здесь?
Посмотрите на код в редакторе - мы использовали в нем две лямбды.
Это интрига:
- создайте список
list1
со значениями от0
до4
; - затем используйте
map
вместе с первойlambda
, чтобы создать новый список, в котором все элементы были оценены как2
, возведенные в мощность, взятая из соответствующего элемента из спискаlist1
; - потом выводится список
list2
; - на следующем шаге снова используйте функцию
map()
, чтобы использовать возвращаемый генератор и напрямую печатать все значения, которые он выдает; как вы можете видеть, мы задействовали вторуюlambda
здесь - она просто возводит в квадрат каждый элемент из спискаlist2
.
Попробуйте представить тот же код без лямбд. Будет лучше? Это маловероятно.