기존에 람다 함수에 대한 학습은 했었지만
알고리즘 문제를 푸는 도중sort()
함수와 함께 정렬 기준에 대한 key 값을
lambda 함수
를 사용해 여러 조건을 나열하는 것을 보고,
제대로 정리를 해보려고 한다.
lambda
키워드 다음에 함수에 전달할 매개변수들을 콤마로 구분하여 나열
lambda
: 람다 함수를 정의하기 위한 키워드arguments
: 함수의 인자(매개변수)를 나타내는 부분, 여러 개의 인자를 콤마로 구분 가능expression
: 함수가 수행할 연산 또는 표현식을 나타내는 부분, 결과가 람다 함수의 반환 값lambda (arguments) : (expression) -> lambda 매개변수들 : 표현식
add = lambda x, y: x + y subtract = lambda x, y: x - y multiply = lambda x, y: x * y divide = lambda x, y: x / y result1 = add(5, 3) result2 = subtract(10, 4) result3 = multiply(6, 7) result4 = divide(9, 3) print (result1) print (result2) print (result3) print (result4)
sorted()
함수와 함께 리스트 요소 정렬students = [ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 22}, {"name": "Charlie", "age": 28} ] sorted_students = sorted(students, key=lambda student: student["age"]) print(sorted_students)
map()
함수와 함께 리스트 요소 변환numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(lambda x: x**2, numbers)) print(squared_numbers)
filter()
함수와 함께 조건에 맞는 요소 필터링numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers)
람다 함수는 한 줄의 표현식으로 작성해야 하기 때문에,
복잡한 로직이나 조건문, 반복문 등을 사용할 수 없다.
def
키워드를 사용하여 함수를 정의하는 것이 좋음!람다 함수는 이름이 없어 디버깅이 어렵다.
람다 함수를 여러 번 사용하거나 재사용하기 위해서는,
변수에 할당하거나 다른 함수로 정의해야 한다.
람다 함수는 가독성을 높이기 위해 적절하게 사용해야 한다.
람다 함수를 남용하거나 복잡하게 사용하게 되면, 코드의 이해도가 떨어진다.