Module (13%)
Section (75%)

Лямбды и функция map()

В простейшем из всех возможных случаев функция map():

map(function, list)

принимает два аргумента:

  • функцию;
  • список.

Приведенное выше описание чрезвычайно упрощено:

  • второй аргумент map() может быть любым объектом, по которому можно итерироваться (например, кортеж или просто генератор);
  • map() может принимать более двух аргументов.

Функция map() применяет функцию, переданную ее первым аргументом, ко всем элементам второго аргумента и возвращает итератор, дающий все последующие результаты функции. Вы можете использовать полученный итератор в цикле или преобразовать его в список с помощью функции list().

Вы можете увидеть роль лямбды здесь?

Посмотрите на код в редакторе - мы использовали в нем две лямбды.

Это интрига:

  • создайте списокlist1 со значениями от 0 до 4;
  • затем используйте map вместе с первой lambda, чтобы создать новый список, в котором все элементы были оценены как 2, возведенные в мощность, взятая из соответствующего элемента из спискаlist1;
  • потом выводится список list2;
  • на следующем шаге снова используйте функцию map(), чтобы использовать возвращаемый генератор и напрямую печатать все значения, которые он выдает; как вы можете видеть, мы задействовали вторую lambda здесь - она просто возводит в квадрат каждый элемент из списка list2.

Попробуйте представить тот же код без лямбд. Будет лучше? Это маловероятно.



Code

list1 = [x for x in range(5)]
list2 = list(map(lambda x: 2 ** x, list1))
print(list2)

for x in map(lambda x: x * x, list2):
print(x, end=' ')
print()
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×