Python : Lambda Function

m_ngyeong·2024년 10월 10일
0

Python

목록 보기
8/17
post-thumbnail

🐍 Python


람다 함수(Lambda Function)

람다 함수(lambda function)는 파이썬에서 사용되는 익명 함수로, 한 줄로 정의할 수 있는 간단한 함수이다. 일반적인 함수처럼 이름을 가지지 않고, 간결하게 함수를 정의하고 사용할 때 유용하다. 함수를 정의하고 사용하는 번거로움을 줄여주어 주로, 복잡한 작업보다는 짧고 간단한 연산이나 임시로 필요한 작업에 주로 사용된다.

람다 함수의 기본 구조

lambda 인자1, 인자2, ... : 표현식
  • lambda 키워드: 람다 함수를 정의할 때 사용.
  • 인자: 함수에 전달할 인자. 여러 개의 인자를 받을 수 있음.
  • 표현식: 함수가 반환할 단일 표현식. 표현식의 결과가 자동으로 반환.

람다 함수는 def 키워드로 함수를 정의하는 것과 다르게 return 문이 필요 없으며 표현식 자체가 반환된다.


람다 함수의 예시

기본 예시

# x에 2를 더하는 람다 함수
add_two = lambda x: x + 2

# 결과 출력
print(add_two(3))  # 출력: 5
  • lambda x: x + 2x를 받아서 x + 2를 반환하는 함수

두 개 이상의 인자를 받는 람다 함수

# 두 숫자의 합을 구하는 람다 함수
add = lambda x, y: x + y

# 결과 출력
print(add(3, 5))  # 출력: 8
  • 람다 함수는 여러 개의 인자를 받을 수 있으며, 여기서는 xy 두 개의 인자를 받아 그 합을 반환

람다 함수의 활용

map() 함수와 함께 사용

map()반복 가능한(iterable) 객체(리스트, 튜플 등)의 모든 요소에 특정 함수를 적용하고, 그 결과를 새로운 map 객체로 반환하는 함수이다.

# 리스트의 각 요소에 2를 곱하는 람다 함수
numbers = [1, 2, 3, 4]
result = map(lambda x: x * 2, numbers)

# 결과를 리스트로 변환하여 출력
print(list(result))  # 출력: [2, 4, 6, 8]

filter() 함수와 함께 사용

filter()조건을 만족하는 요소만 걸러내는 함수이다.

# 리스트에서 짝수만 필터링하는 람다 함수
numbers = [1, 2, 3, 4, 5, 6]
result = filter(lambda x: x % 2 == 0, numbers)

# 결과를 리스트로 변환하여 출력
print(list(result))  # 출력: [2, 4, 6]

sorted() 함수와 함께 사용

sorted() 함수는 리스트나 튜플의 요소를 특정 기준에 따라 정렬할 수 있다.

# 튜플 리스트를 두 번째 요소(나이) 기준으로 정렬하는 람다 함수
students = [("Alice", 22), ("Bob", 19), ("Charlie", 23)]
sorted_students = sorted(students, key=lambda student: student[1])

# 결과 출력
print(sorted_students)  # 출력: [('Bob', 19), ('Alice', 22), ('Charlie', 23)]

reduce() 함수와 함께 사용

reduce() 함수는 리스트의 모든 요소를 누적하여 하나의 값으로 줄여나갈 때 사용한다.

from functools import reduce

# 리스트의 모든 값을 곱하는 람다 함수
numbers = [1, 2, 3, 4]
result = reduce(lambda x, y: x * y, numbers)

# 결과 출력
print(result)  # 출력: 24

람다 함수의 장단점

장점

  • 간결함: 짧고 간단한 함수를 빠르게 정의할 수 있음.
  • 익명성: 함수를 이름 없이 사용할 수 있어, 일시적으로 필요한 작은 작업에 유용.
  • 함수형 프로그래밍: map(), filter(), sorted() 등과 결합해 함수형 프로그래밍 스타일을 구현할 수 있음.

단점

  • 복잡한 로직에는 부적합: 람다 함수는 한 줄로 제한되기 때문에 복잡한 로직을 구현하기 어려움.
    따라서 복잡한 로직을 처리할 때는 일반 함수(def)를 사용하는 것이 더 적합함.
  • 가독성 저하: 지나치게 사용하면 코드의 가독성이 떨어질 수 있음.
  • 디버깅이 어려움: 함수 이름이 없기 때문에 디버깅할 때 불편할 수 있음.


profile
ʚȉɞ

0개의 댓글