람다

Python SELF KO
레벨 13 , 레슨 2
사용 가능

2.1 람다 함수 정의하기

람다 함수, 일명 익명 함수이름 없이 한 줄로 간단하게 작성할 수 있는 함수야. lambda 키워드를 사용해서 만들 수 있어.

def로 정의되는 일반적인 함수와 달리, 람다 함수는 즉시 만들어지고 보통 한 줄로 간단히 수행될 작업에 사용돼.

람다 함수의 문법은 lambda 키워드 다음에 인자가 오고, 콜론과 표현식이 이어지는 방식이야:

 
lambda 인자들: 표현식
    

람다 함수는 어떤 수의 인자도 받을 수 있지만, 표현식은 하나만 가질 수 있어. 이 표현식의 값은 자동으로 반환돼.

예제:

람다 함수 일반 함수

square = lambda x: x ** 2
print(square(5))  # 출력: 25
                    

def square(x):
    return x ** 2
print(square(5))  # 출력: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 람다 함수 사용하기

람다 함수는 map(), filter(), sorted() 같은 다른 함수와 결합해서 자주 사용돼. 또한 다른 함수의 인자로도 사용될 수 있어.

map()와 함께 사용하기

map() 함수는 주어진 함수를 각 iterable 요소에 적용해서 결과를 가진 iterator를 반환해. 람다 함수는 map()와 함께 사용하기에 좋은데, 요소 변환을 위한 함수를 간결하게 정의할 수 있으니까.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]
        

filter()와 함께 사용하기

filter() 함수는 주어진 함수가 True를 반환하는 iterable의 요소들로 이루어진 iterator를 반환해. 람다 함수를 사용하면 필터링 조건을 빠르게 정의할 수 있어.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]

sorted()와 함께 사용하기

sorted() 함수는 iterable의 요소들을 정렬해. 람다 함수는 key 인자를 통해 사용자 정의 정렬 기준을 정의하는 데 사용될 수 있어.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # 출력: ['date', 'apple', 'banana', 'cherry']
        

표현식 안의 람다 함수

람다 함수는 리스트 컴프리헨션이나 딕셔너리 생성기 같은 다른 표현식 안에서도 사용할 수 있어.


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # 출력: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 람다 함수의 제한사항

람다 함수는 일반 함수와 비교했을 때 몇 가지 제한사항이 있어:

표현식의 제한:

람다 함수는 단 하나의 표현식만 가질 수 있고, if, else 같은 제어 흐름 명령문이나 반복문을 포함할 수 없어.

문서화 불가:

람다 함수는 문서화 문자열 (docstring)을 포함할 수 없어, 그래서 기능을 문서화하기 어려워.

디버깅의 어려움:

이름과 문서화의 부재로 인해 람다 함수는 일반 함수에 비해 디버깅하기 어려워.

람다 함수의 제한 예제

람다 함수 안에 여러 표현식을 사용하려고 하면 문법 오류가 발생해:


# 이 코드는 오류를 발생시킴
invalid_lambda = lambda x: x ** 2; print(x)
        
    
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION