отладки?или лямбда-функции и кортежи - PullRequest
0 голосов
/ 25 сентября 2018

Создайте функцию get_lambda, которая возвращает лямбда-функцию, которая принимает кортеж и поднимает каждый элемент в кортеже до второй степени.

>>>f = get_lambda()
>>>f((1, 2, 3, 4))
>>>(1, 4, 9, 16)

def get_lambda():
    get_lambda = lambda x: x**2
    f = get_lambda()
    f((1, 2, 3, 4))

Я не могу понять, почему я продолжаю получать ошибку.что не так с моим кодом?

1 Ответ

0 голосов
/ 25 сентября 2018

Несколько вещей, чтобы распаковать здесь.Ваша функция get_lambda(), как упомянуто chepner, не имеет оператора return.Вместо этого используйте что-то вроде этого:

def get_lambda():
    return lambda x: x**2
f = get_lambda()

Следующая проблема заключается в том, что ваша лямбда-функция принимает число и выводит его квадрат - он не работает с кортежами!Чтобы применить его ко всему списку, вы можете использовать встроенную функцию map, например:

out = map(f, (1,2,3,4))
print(tuple(out)) # prints (1, 4, 9, 16)

В качестве альтернативы, вы можете переписать свою лямбду для применения к итерируемым объектам (таким как списки икортежи):

def get_lambda():
    return lambda tup: (i**2 for i in tup)
f = get_lambda()
out = f((1,2,3,4))
print(tuple(out))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...