лямбда объяснение используемых параметров - PullRequest
0 голосов
/ 13 ноября 2018

Я хотел бы спросить о чем-то довольно простом, касающемся параметров лямбды.

Я понимаю, как работает функция лямбды, но когда дело доходит до этого, я запутался, с какими параметрами.

Пример:

from functools import reduce

# Simple example so that I could understand based on the explanation from experts
# here. You could modify as however you wish to explain it.
product = reduce(lambda x, y: x + y, [1,2,3,4])

Вот более короткая версия для сравнения:

product = 0
for x in [1,2,3,4]:
    product = product + x
print(product)

Теперь мой вопрос: x - это переменная для списка или yпеременная для списка в первом примере для лямбда?И какое значение по умолчанию для x или y (судя по тому, принадлежит ли один из них к продукту?, Поскольку я не инициировал его начальное значение для «примера лямбды», а только для второго примера, который я инициализировал).

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

С:

product = reduce(lambda x, y: x + y, [1, 2, 3, 4])

каждый раз, когда вызывается лямбда-функция, аргумент x представляет собой промежуточный итог (или накопленное значение), а y будет последовательными элементами итерируемого [1, 2, 3, 4].

Поскольку вы не указали необязательный параметр initializer , значение x будет установлено на первый элемент итерируемого (в данном случае 1) и первый вызов lambda с началом со второго элемента итерируемого - иначе x было бы значением, переданным в качестве инициализатора, и первый вызов передал бы первый аргумент итерируемого как y параметр первый раз.

0 голосов
/ 13 ноября 2018

map() в python принимает список и возвращает список, в котором каждый элемент был изменен в соответствии с какой-либо функцией.Кажется, вы хотите взять список в качестве входных данных и получить в результате число, в этом случае ни map(), ни лямбда-функции не особенно полезны, и простой цикл for, вероятно, является лучшим способом сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...