본문 바로가기
Python/python

파이썬 함수형 프로그래밍 Lambda 함수 활용하기

by 노마드 산코디 2023. 10. 14.
728x90

안녕하세요. 오늘은 파이썬 프로그래밍 언어에서 사용되는 람다(lambda) 표현식에 대해 자세히 알아보려고 합니다. 파이썬의 람다는 간결하면서도 강력한 기능을 제공하여 코드를 더 간편하게 작성하고 함수형 프로그래밍 개념을 적용할 수 있게 해줍니다. 이번 포스팅에서는 람다 표현식의 기본 개념과 파이썬에서의 활용 예제를 살펴보겠습니다.

 

 




1. Lambda란?

람다 (lambda)는 파이썬에서 사용되는 익명 함수입니다. 익명 함수란 이름이 없는 함수를 말하며, 주로 간단한 연산을 수행하거나 다른 함수의 인자로 전달할 때 사용됩니다. 람다 함수는 lambda 키워드를 사용하여 정의하며, 일반적으로 한 줄로 간단한 함수를 표현합니다. 람다 함수는 주로 함수형 프로그래밍 스타일에서 많이 활용됩니다.


기본 구문

lambda 인자: 표현식

 

  • lambda
    람다 함수를 정의하기 위한 키워드입니다.
  • 인자
    함수에 전달되는 인자(parameter)를 나타냅니다.
  • 표현식
    람다 함수가 수행하는 연산이나 표현식을 나타냅니다. 이 부분은 함수의 반환값이 됩니다.



예시 코드

add = lambda x, y: x + y
result = add(3, 5)
print(result)  # 출력: 8


위의 코드에서 lambda x, y: x + y는 두 개의 인자 x와 y를 받아서 그들을 더한 값을 반환하는 람다 함수를 정의합니다. 이후에 add(3, 5)를 호출하여 3과 5를 더한 결과인 8을 반환합니다.



람다 함수는 주로 map(), filter(), sorted()와 같은 고차 함수(higher-order function)와 함께 사용되거나, 간단한 함수를 한 줄로 표현할 때 유용하게 활용됩니다.

 




 


2. 인자 없는 Lambda 함수

인자 없는 람다 함수는 파이썬에서 사용되며, 아무런 인자를 가지지 않고 동작하는 익명 함수를 생성합니다. 이러한 함수는 특정 작업을 수행하거나 값을 반환할 때 사용됩니다. 



기본 구문

lambda: expression


여기서 expression은 함수가 수행할 작업을 나타내는 표현식(expression)입니다.



1. 인자 없음

이 함수는 아무런 인자를 받지 않습니다. 따라서 함수 내부에서 매개변수를 선언할 필요가 없습니다.



2. 간단한 작업
주로 간단한 작업을 수행하는 경우에 사용됩니다. 예를 들어, 고정된 값을 반환하거나 특정 동작을 실행할 때 유용합니다.

greet = lambda: "Hello, World!"
result = greet()


이 예제에서 greet 함수는 아무런 인자를 받지 않고 "Hello, World!"를 반환하는 람다 함수를 정의합니다.



3. 변수에 할당
인자 없는 람다 함수를 변수에 할당하여 나중에 사용할 수 있습니다. 이를 통해 코드를 간결하게 유지하면서 필요한 작업을 실행할 수 있습니다.

my_function = lambda: print("This is a lambda function with no arguments.")
my_function()


위의 예제에서 my_function 변수에 람다 함수를 할당하고, 나중에 my_function()을 호출하여 함수를 실행합니다.



4. 고차 함수와 함께 사용
인자 없는 람다 함수는 고차 함수와 함께 사용될 때 특히 유용합니다. map(), filter()와 같은 함수에 람다 함수를 인자로 전달하여 데이터 변환 또는 필터링을 수행할 수 있습니다.

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda: x**2, numbers))




인자 없는 람다 함수는 간단한 작업을 수행할 때 편리하게 사용할 수 있으며, 코드를 간결하게 만들어주는데 도움이 됩니다.





 


3. Lambda의 활용 예제

람다(lambda) 함수는 주로 간단한 연산을 수행하거나 함수의 인자로 전달하는 등 다양한 상황에서 활용됩니다. 



1. 리스트 정렬

students = [
    {'name': 'Alice', 'score': 85},
    {'name': 'Bob', 'score': 92},
    {'name': 'Charlie', 'score': 78}
]

# 람다 함수를 사용하여 학생들을 점수순으로 정렬
sorted_students = sorted(students, key=lambda student: student['score'])
print(sorted_students)


위의 소스 코드에서는 학생들을 점수순으로 정렬하기 위해 람다 함수를 사용하고 있습니다. 람다 함수는 sorted 함수의 key 매개변수로 전달되며, 학생 딕셔너리에서 'score' 키를 사용하여 정렬합니다.



2. map() 함수와 함께 사용

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

# 각 숫자를 제곱하는 람다 함수를 map() 함수와 함께 사용
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)


위의 소스 코드는 numbers 리스트의 각 요소를 lambda x: x**2 람다 함수에 전달하여 각 숫자를 제곱한 결과를 새로운 리스트인 squared_numbers에 저장합니다. 결과적으로 squared_numbers에는 각 숫자의 제곱값이 포함됩니다.



3. filter() 함수와 함께 사용하여 조건별 요소 필터링

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 짝수만 필터링하는 람다 함수를 filter() 함수와 함께 사용
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)


위의 소스 코드는 numbers 리스트의 각 요소를 lambda x: x % 2 == 0 람다 함수에 전달하여, 해당 요소가 짝수인 경우에만 필터링합니다. 이후 filter() 함수의 결과를 list() 함수로 리스트로 변환하여 even_numbers에 저장합니다. 결과적으로 even_numbers에는 numbers 리스트에서 필터링된 짝수만 포함됩니다.




4. 딕셔너리 정렬

scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78}

# 값(점수)을 기준으로 딕셔너리를 정렬하는 람다 함수 사용
sorted_scores = dict(sorted(scores.items(), key=lambda item: item[1]))
print(sorted_scores)


위의 소스 코드는 scores 딕셔너리의 각 항목을 튜플로 변환한 후, 튜플의 두 번째 요소, 즉 점수(item[1])를 기준으로 정렬합니다. 그 결과를 sorted() 함수로 정렬한 후, 다시 딕셔너리로 변환하여 sorted_scores에 저장합니다. 결과적으로 sorted_scores에는 점수를 기준으로 정렬된 딕셔너리가 포함됩니다.


5. 간단한 계산

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


이 코드는 add라는 변수에 두 개의 매개변수 x와 y를 가지고 있는 람다 함수를 할당합니다. 이 람다 함수는 x와 y를 더한 값을 반환합니다. 그런 다음 add 함수를 호출하여 3과 5를 더한 결과를 result 변수에 저장하고, 이를 출력합니다. 결과적으로 result에는 3 + 5의 결과인 8이 포함됩니다.




람다
 함수는 간단한 함수를 빠르게 정의하고 사용하는 데 유용하며, 코드의 가독성을 향상시킬 수 있습니다. 다양한 함수와 함께 조합하여 파이썬 프로그래밍을 더 효율적으로 만들 수 있습니다.

 

 





4. Lambda 함수 사용시 주의사항



1. 단순한 표현식만 사용
lambda 함수는 간단한 표현식을 사용해야 합니다. 복잡한 로직이나 여러 줄의 코드를 lambda 함수 내부에 넣는 것은 권장되지 않습니다. 대신에 이러한 작업은 일반적인 함수로 작성하는 것이 더 명확하고 유지보수하기 쉽습니다.

2. 함수의 이름 부재
lambda 함수는 익명 함수로, 이름이 없습니다. 따라서 코드의 가독성을 향상시키려면 lambda 함수를 변수에 할당하고 변수 이름을 사용하여 함수를 호출하는 것이 좋습니다.

3. 간단한 경우에만 사용
lambda 함수는 주로 간단한 연산에 사용됩니다. 복잡한 조건문이나 여러 작업을 수행해야 하는 경우 일반 함수를 선호해야 합니다.

4. 주석 부재
lambda 함수 내에 주석을 추가할 수 없습니다. 코드에 주석이 필요한 경우, 일반 함수를 사용해야 합니다.

5. 주의할 점
lambda 함수는 가급적으로 단순하게 유지해야 합니다. 복잡한 로직이나 다양한 예외 처리를 포함하면 코드가 어려워질 수 있으므로, 이런 경우에는 일반 함수를 사용해야 합니다.

6. 람다 함수를 적절한 문맥에서 사용
주로 람다 함수는 함수형 프로그래밍 패러다임을 따르는 작업에서 사용됩니다. 예를 들어 map(), filter(), sorted()와 같은 함수에 람다 함수를 전달하여 사용할 수 있습니다.



람다 함수를 적절하게 사용하면 코드를 더 간결하게 작성할 수 있지만, 너무 복잡하게 만들거나 코드의 가독성을 떨어뜨리지 않도록 주의해야 합니다.


 





최종 정리

오늘은 파이썬의 lambda 함수에 대한 기본적인 내용을 주제로 정리해 보았습니다. 람다 함수는 파이썬에서 익명 함수를 생성하는 강력한 도구로, 코드를 간결하게 작성하고 간단한 작업을 빠르게 처리할 때 매우 유용합니다. 람다 함수의 구문은 간단하며, 주로 함수형 프로그래밍 패러다임과 함께 사용됩니다.

람다 함수를 이해하고 활용할 수 있다면, 코드 작성과 읽기가 더 효율적이고 간결해지며, 함수형 프로그래밍 스타일을 적용하여 더 모듈화된 코드를 작성할 수 있습니다. 

감사합니다.

728x90
반응형