🔨 개발/📚 개발지식모음집

파이썬 람다 함수 사용법 정리

해풀 2024. 11. 4. 08:37

다차원 리스트의 정렬이나 딕셔너리의 value 기준 정렬 등에 람다 함수를 사용하게 될 일이 많은데, 알음알음 남의 코드 보면서 알게 되어 아무생각 없이 람다 함수를 사용하다가, 한번 개념을 정리해 보는 것이 좋을듯 하여 남겨본다.

 

람다 함수란?

파이썬에서 람다 함수는 lambda 키워드를 사용하여 간단하게 익명 함수를 만드는 방법이다. 주로 한 줄로 표현할 수 있는 간단한 함수에 유용하게 사용된다. 내가 처음 람다 함수를 이해한 방식은 수학에서 집합을 나타낼 때, S = { x | ... } 로 시작하는 문법과 거의 동일하다고 이해하고 사용했다. 람다 함수는 일반 함수처럼 이름을 가지지 않고, 선언과 동시에 사용된다. 람다 함수의 기본 문법을 보면 다음과 같다.

# 람다 함수 기본 문법
lambda arg1, arg2: return_value

# 두 숫자를 더하는 람다 함수의 예시
add = lambda x, y: x + y
print(add(5, 3)) # 출력: 8

 

람다 함수로 리스트 정렬하기

람다 함수는 리스트를 특정 조건에 따라 정렬할 때 매우 유용하다. 예를 들어, 다중 리스트를 특정 인덱스 기준으로 정렬하려고 할 때 사용할 수 있다. 예를 들어 학생들의 이름과 점수 리스트가 있을 때, 이 리스트를 점수 기준으로 정렬하려면 람다 함수를 활용할 수 있다.

students = [("철수", 85), ("민수", 75), ("범수", 90)]

# 점수를 기준으로 오름차순 정렬
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)
# 출력: [("민수", 75), ("철수", 85), ("범수", 90)]

# 점수를 기준으로 내림차순 정렬
sorted_students_reverse = sorted(students, key=lambda x: x[1], reverse=True)
print(sorted_students_reverse)
# 출력: [("범수", 90), ("철수", 85), ("민수", 75)]

여기서 key=lambda x: x[1] 부분은 x[1] 값인 점수 기준으로 정렬하라는 의미이다.

 

딕셔너리를 value 기준으로 정렬하기

딕셔너리는 for 문에 넣어 반복문을 돌리면 key를 기준으로 돌게 된다. 그런데 key가 아니라 value를 기준으로 무언가 하고 싶을 때가 많은데, value를 기준으로 정렬할 때에도 람다 함수를 사용하면 편리하다.

scores = {"철수": 85, "민수": 75, "범수": 90}

# value 기준으로 정렬하기
sorted_scores = dict(sorted(scores.items(), key=lambda x: x[1]))
print(sorted_scores)
# 출력: {'민수': 75, '철수': 85, '범수': 90}

여기서 sorted(scores.items(), key=lambda x: x[1]) 부분은 딕셔너리의 (key, value) pair를 리스트로 변환한 후, value를 기준으로 정렬한 것이다. 마지막에 dict()로 감싸서 다시 딕셔너리 형태로 변환한 것이다.

 

리스트 필터링하기

람다 함수는 filter()와 함께 특정 조건을 만족하는 요소만 걸러낼 때도 유용하다. 예를 들어 숫자 리스트에서 짝수만 걸러내고 싶다면 다음과 같이 할 수 있다.

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

# 짝수만 필터링하기
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers)
# 출력: [2, 4, 6]

 

마무리

람다 함수는 파이썬에서 간단한 함수를 작성할 때 매우 유용한 도구이다. 리스트나 딕셔너리의 특정 기준에 따라 정렬하거나, 특정 조건에 맞는 요소만 필터링할 때 간결하게 사용할 수 있다.

728x90