본문 바로가기

IT - 프로그래밍/파이썬

파이썬 배우기: 익명 함수(lambda 함수)

반응형

파이썬에서는 일반적으로 def 키워드를 사용해 함수를 정의하지만,
짧고 간단한 함수를 만들 때는 익명 함수(lambda 함수) 를 사용할 수 있습니다.


이번 글에서는 lambda 함수의 개념과 활용법을 다양한 예제와 함께 알아보겠습니다! 🚀

익명 함수(lambda)란?


• 이름이 없는 함수 → 한 줄로 작성되는 간단한 함수
• lambda 키워드를 사용하여 정의
• 일반 함수보다 짧고 간결한 코드를 작성할 때 유용

📌 기본 문법
lambda 매개변수1, 매개변수2, ... : 표현식

✅ lambda를 사용하면 반환값(return)이 자동으로 처리됩니다.

lambda 함수 기본 예제

(1) 일반 함수 vs lambda 함수

# 일반 함수 (def 사용)
def add(x, y):
    return x + y

# lambda 함수
add_lambda = lambda x, y: x + y

print(add(3, 5))        # 8
print(add_lambda(3, 5)) # 8


🔹 일반 함수는 def를 사용하여 여러 줄로 작성 가능
🔹 lambda 함수는 한 줄로 간단하게 표현 가능

lambda 함수 활용 예제

(1) 리스트에서 짝수만 필터링하기 (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)  # [2, 4, 6, 8, 10]


🔹 filter(함수, 리스트) → 조건을 만족하는 요소만 필터링
🔹 lambda x: x % 2 == 0 → 짝수인 경우만 필터링

(2) 리스트 요소 제곱하기 (map 함수와 함께 사용)

numbers = [1, 2, 3, 4, 5]

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


🔹 map(함수, 리스트) → 모든 요소에 변형 적용
🔹 lambda x: x ** 2 → 각 숫자를 제곱

(3) 리스트 정렬 (sorted 함수와 함께 사용)

students = [("철수", 90), ("영희", 85), ("민수", 95)]

# 두 번째 요소(점수)를 기준으로 정렬
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)  
# [('영희', 85), ('철수', 90), ('민수', 95)]


🔹 sorted(리스트, key=정렬기준) → 특정 기준으로 정렬
🔹 lambda x: x[1] → 각 튜플의 두 번째 값(점수) 를 기준으로 정렬

(4) 여러 조건으로 정렬 (sorted 사용)

students = [("철수", 90, 20), ("영희", 90, 22), ("민수", 95, 21)]

# 점수 내림차순, 나이 오름차순 정렬
sorted_students = sorted(students, key=lambda x: (-x[1], x[2]))
print(sorted_students)  
# [('민수', 95, 21), ('영희', 90, 22), ('철수', 90, 20)]


🔹 lambda x: (-x[1], x[2]) → 점수는 내림차순(-x[1]), 나이는 오름차순(x[2])으로 정렬

(5) 조건에 따라 다른 값 반환 (삼항 연산자와 함께 사용)

check_even = lambda x: "짝수" if x % 2 == 0 else "홀수"

print(check_even(4))  # 짝수
print(check_even(7))  # 홀수


🔹 lambda x: "짝수" if x % 2 == 0 else "홀수"
🔹 삼항 연산자(if-else)를 활용하여 짝수/홀수 판별

lambda 함수를 사용할 때 주의할 점


✅ lambda는 간단한 함수만 작성할 때 사용
✅ 복잡한 로직이 필요한 경우 일반 함수(def)를 사용

❌ 잘못된 예제 (lambda에서 여러 줄 사용 불가)
# 여러 줄을 작성할 경우 SyntaxError 발생
lambda x: print(x); print("출력 완료")  


✅ 여러 줄이 필요하면 일반 함수(def) 사용하기

def print_message(x):
    print(x)
    print("출력 완료")
lambda를 사용하면 좋은 경우


✅ 한 번만 사용할 짧은 함수가 필요할 때
✅ 다른 함수(map, filter, sorted)와 함께 사용할 때
✅ 간단한 조건문을 처리할 때

하지만 복잡한 연산이나 여러 개의 조건이 필요한 경우 일반 함수를 사용하는 것이 좋습니다!

마무리 및 요약


✅ lambda 함수는 짧고 간단한 함수를 만들 때 유용
✅ lambda 매개변수: 표현식 형식으로 사용
✅ map(), filter(), sorted() 등과 함께 자주 활용
✅ 여러 줄이 필요하거나 복잡한 연산이 필요한 경우 def 사용이 더 적절

이제 lambda 함수를 활용해 더 간결한 코드를 작성해 보세요!

#파이썬 #Python #익명함수 #lambda #코딩기초 #파이썬공부 #개발자 #프로그래밍 #PythonTips #코딩학습 #Python3

반응형