В Python 2 этот код OK:аргументы лямбда распаковывать ошибки
f = lambda (m, k): m + k
m = [1,2,3,4]
k = [5,6,7,8]
print(map(f, zip(m, k)))
но в Python 3 произошла следующая ошибка:
f = lambda (m, k): m + k
^
SyntaxError: invalid syntax
Если удалить скобки в лямбда-выражения, то произошла другая ошибка:
TypeError: <lambda>() missing 1 required positional argument: 'k'
Также подход с кортежем как один аргумент лямбда работает в Python 3, но это не (для чтения):
f = lambda args: args[0] + args[1]
Как я могу правильно распаковать значения в Python 3?
'map()' применяет 'f' к каждому элементу предоставленного итерабельного; в вашем примере, 'map()' пытается передать '(1, 5)' в вашу функцию, которая принимает два аргумента, но предоставляется только одна, поэтому она терпит неудачу и дает вам ошибку. – dazedconfused