Понять лямбды не сложно -- это функция, которая принимает какое-то значение аргумента, проводит с ним какие-нибудь вычисления и просто что-то возвращает, всё. Лямбды в отличии от обычных функций не должны делать каких-то побочных действий(менять что-то в бд, печатать на экране, менять внешние переменные, что угодно не связанное с просто возвращаемым значением).
Главный вопрос при этом: а нафейхоа они такие нужны и как их применять на практике?
А на практике они чаще всего применяются с вещами, которые требуют в качестве одного из своих аргументов какую-нибудь функцию, т.е., чтобы пользоваться лямбдами нужно начать пользоваться всякими filter, apply, map, reduce и т.д. Тогда вопросы о том что такое лямбды и зачем они нужны отпадут сами собой.
Например, удалить все 'NaN' из списка:
list(filter(lambda x : x != 'NaN', arr)) # Не затронет изначальный массив arr, просто создаст новый, в котором каждый элемент не равен NaN
Попробуй переписать то же самое(просто удалить из списка где есть несколько 'NaN' их все, не затрагивая изначальный список) через цикл с if-ом и ты почувствуешь разницу.
Другая особенность в том, что лямбда сама может быть возвращаемым(и принимаемым) значением, т.е. можно реализовать частичное применение функции(так называемое каррирование). Пример:
add = lambda a: lambda b: a + b add(2)(2) # вернёт 4increment = add(1)increment(2) # вернёт 3(2 + 1)