안녕하세요. 오늘 지난 글에 이어 람다 함수와 데코레이터를 알아보도록 하겠습니다.
1. 람다 함수란?
람다 함수는 익명 함수 (anonymous function) 라 불리기도 하는데 이는 이름이 없는 간단한 함수이기 때문입니다.
- 람다 함수는 파이썬에서 간단한 함수를 간결하게 표현하는 방법으로 주로 간단한 연산이나 정렬 함수등에 많이 사용되며
' lambda ' 키워드를 사용하여 정의되며 이 함수는 런타임에 생성됩니다.
2. 람다 함수와 일반 함수의 차이점
람다 함수와 일반 함수의 가장 큰 차이점은 이름과 def 키워드의 유무 입니다. 람다 함수는 이름이 없고, 단일 표현식만 가질수 있기에 간단한 함수를 정의 할때 일반 함수 보다 간결하게 표현 할 수 있습니다. 하지만 복잡한 함수나 여러 줄의 코드를 처리해야 할 때는 일반 함수를 사용하는 것이 적절하다 볼 수 있습니다.
람다 함수는 함수형 프로그래밍에서 콜백 함수나 정렬 함수 등을 간단하게 작성할 때 유용하게 사용됩니다. 또한 람다 함수는 ' map() ' , ' filter() ' , ' reduce() ' 와 같은 함수와 함께 사용하여 코드를 더욱 간결하게 만들 수 있습니다.
3. 람다 함수 문법
lambda 매개변수들: 표현식
4. 람다 함수의 활용 예제
1) 덧셈 람다 함수
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
2) 곱셈 람다 함수
multiply = lambda x, y: x * y
print(multiply(3, 5)) # 출력: 15
3) 리스트 정렬 람다 함수
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 30}
]
# 나이를 기준으로 오름차순 정렬
students.sort(key=lambda x: x['age'])
print(students)
# 출력: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]
# 이름을 기준으로 내림차순 정렬
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 출력: [{'name': 'Charlie', 'age': 30}, {'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 25}]
4) 조건부 표현식, 크고 작음 비교 람다 함수, 짝수 홀수 함
# 두 수 중에서 큰 수 반환
max_num = lambda x, y: x if x > y else y
print(max_num(3, 5)) # 출력: 5
# 리스트에서 짝수만 필터링
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 출력: [2, 4, 6]
5) reduce () 람다 함수 사용 예제
from functools import reduce
numbers = [1, 2, 3, 4, 5]
# reduce()를 사용하여 리스트의 모든 요소들을 더함
total_sum = reduce(lambda x, y: x + y, numbers)
print(total_sum) # 출력: 15
위 예제에서 reduce() 함수는 먼저 numbers 리스트의 첫 번째 요소와 두 번째 요소를 더한 후, 그 결과와 세 번째 요소를 더하고, 이를 반복하여 마지막 요소까지 더한 뒤 최종 결과를 반환합니다. 따라서 위 예제에서는 1 + 2 + 3 + 4 + 5를 더한 결과인 15가 출력됩니다.
reduce() 함수는 복잡한 누적 작업이 필요할 때 특히 유용하며, 리스트의 최댓값이나 최솟값을 구하는 등의 다양한 작업에 활용될 수 있습니다. 또한, reduce() 함수를 사용하여 리스트 요소들을 조합하거나 평균을 구하는 등의 다양한 누적 작업을 할 수 있습니다.
6) 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() 함수는 리스트나 이터러블 객체의 각 요소들에 대해 지정된 함수를 적용하여 새로운 이터러블 객체를 생성합니다. map() 함수는 원본 리스트를 변경하지 않고, 새로운 변환된 리스트를 반환합니다.
7) filter 람다 함수 예제
numbers = [1, 2, 3, 4, 5, 6]
# 짝수만 필터링하여 새로운 리스트 생성
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 출력: [2, 4, 6]
위 예제에서 filter() 함수는 numbers 리스트의 각 요소들을 lambda x: x % 2 == 0 람다 함수에 적용하여 조건을 만족하는 짝수만 필터링하여 새로운 리스트를 생성합니다. 따라서 짝수인 [2, 4, 6]로 필터링된 새로운 리스트가 생성되었습니다.
filter() 함수는 map() 함수와 마찬가지로 간단한 필터링 작업을 수행할 때 유용하며, 조건 함수를 사용하여 복잡한 필터링을 할 수도 있습니다. filter() 함수를 사용하여 특정 조건에 맞는 요소들만 걸러낼 수 있으며, 또한 lambda 함수와 함께 사용하여 조건에 따라 동적으로 필터링을 할 수도 있습니다. filter() 함수는 데이터를 변형시키지 않고 원본 리스트를 유지하는 특징이 있습니다.
파이썬 함수 1편: 파이썬 함수란? Function 이란?
오늘은 파이썬 함수에 대하여 알아보도록 하겠습니다. 함수의 이해와 활용 1. 함수(function)란? 함수란 코드를 논리적인 단위로 나누어 구성하는 것이으로 특정 기능을 수행하는 코드블록입니다.
vipdeveloper.tistory.com
파이썬 함수 2편: 람다(lambda) 함수와 예제들 (map, filter, reduce 포함)
안녕하세요. 오늘 지난 글에 이어 람다 함수와 데코레이터를 알아보도록 하겠습니다. 1. 람다 함수란? 람다 함수는 익명 함수 (anonymous function) 라 불리기도 하는데 이는 이름이 없는 간단한 함수
vipdeveloper.tistory.com
파이썬 함수 3편: 데코레이터(decorator) 정의 및 사용법
오늘은 데코레이터에 대하여 알아보도록 하겠습니다. 1. 데코레이터(decorator)란? 파이썬에서 데코레이터는 기존 함수나 메서드의 기능을 수정하거나 확장하기 위해 사용되는 강력한 기능입니다.
vipdeveloper.tistory.com
파이썬 함수 4편: *args, **kwargs , 가변 인자 처리 방법
오늘은 파이썬 함수에서 가변인자에 대하여 알아보도록 하겠습니다. 1. 가변 인자 처리방법 이란? *args, **kwargs 란? *args 와 **kwargs는 파이썬에서 가변인자를 처리하는 방법입니다. 이 방법의 이점
vipdeveloper.tistory.com
'파이썬(python) 기본' 카테고리의 다른 글
파이썬 함수 4편: *args, **kwargs , 가변 인자 처리 방법 (0) | 2023.07.25 |
---|---|
파이썬 함수 3편: 데코레이터(decorator) 정의 및 사용법 (0) | 2023.07.25 |
파이썬 함수 1편: 파이썬 함수란? Function 이란? (0) | 2023.07.25 |
파이썬 자료구조: 딕셔너리(Dictionary) 이해하기, key - value 데이터 구조 (0) | 2023.07.21 |
파이썬 자료구조: 튜플(tuple) (0) | 2023.07.21 |