📌 Python 함수 심화 – Chapter 6-10. 람다
✅ 1. 람다란?
- 람다(lambda) 함수는 이름이 없는 익명 함수.
- 주로 일회성으로 사용할 함수에 활용되며, 코드를 간결하게 작성할 수 있음.
- 기본 구조
lambda 매개변수: 반환값
📌 함수 매개변수로 전달하는 예시
def oz_call(function):
for i in range(5):
function()
def talk():
print("파이썬 이건 또 무슨 개념이야?")
oz_call(talk)
- 출력 결과
파이썬 이건 또 무슨 개념이야?
파이썬 이건 또 무슨 개념이야?
파이썬 이건 또 무슨 개념이야?
파이썬 이건 또 무슨 개념이야?
파이썬 이건 또 무슨 개념이야?
✅ 2. 함수를 매개변수로 사용하는 내장함수
📌 map() 함수 예시
def square(i):
return i * i
numbers_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = map(square, numbers_list)
print("map 결과:", result)
print("map 결과의 list 형변환:", list(result))
- 출력 결과
map 결과: <map object at 0x107536500>
map 결과의 list 형변환: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
📌 filter() 함수 예시
def under(i):
return i < 5
numbers_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(under, numbers_list)
print("filter 결과:", result)
print("filter 결과의 list 형변환:", list(result))
- 출력 결과
filter 결과: <filter object at 0x1075afeb0>
filter 결과의 list 형변환: [1, 2, 3, 4]
✅ 3. 람다 함수 활용
📌 기존 함수 → 람다 함수로 변환
# 제곱 함수 lambda로 작성
square = lambda i: i * i
result = map(square, numbers_list)
print("map 결과의 list 형변환:", list(result))
- 출력 결과
map 결과의 list 형변환: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
📌 조건 함수 → 람다 함수로 변환
under = lambda i: i < 5
result = filter(under, numbers_list)
print("filter 결과의 list 형변환:", list(result))
- 출력 결과
filter 결과의 list 형변환: [1, 2, 3, 4]
📌 즉석에서 사용하는 람다 함수
result = map(lambda i: i * i, numbers_list)
print("map 결과의 list 형변환:", list(result))
- 출력 결과
map 결과의 list 형변환: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
result = filter(lambda i: i < 5, numbers_list)
print("filter 결과의 list 형변환:", list(result))
- 출력 결과
filter 결과의 list 형변환: [1, 2, 3, 4]
✅ 4. 람다 함수의 장점
- 간결한 코드 작성
- 복잡하지 않은 단일 연산을 깔끔하게 처리.
- 익명 함수
- 함수 이름 없이 즉석에서 사용 가능.
- 함수형 프로그래밍
- map(), filter() 같은 내장 함수에서 콜백 함수로 편리하게 사용 가능.
- 가독성 향상
- 코드의 의도가 명확해짐.
✅ 이해도 체크리스트
- map()과 filter() 함수의 기능은?
- map(): 각 요소에 함수를 적용해 새로운 시퀀스를 생성.
- filter(): 각 요소에 함수를 적용해 True인 값만 반환하여 새로운 시퀀스를 생성.
- lambda를 사용하는 이유는?
- 코드를 간결하게 작성.
- 일회성으로 사용되는 익명 함수 작성 가능.
- 함수형 프로그래밍에서 편리하게 콜백 함수로 사용.
- 코드의 가독성을 높일 수 있음.
- lambda 함수를 작성하는 방법은?
lambda 매개변수: 반환값
# 예시
square = lambda x: x * x
print(square(3)) # 출력: 9
이 정리된 내용을 통해 람다 함수의 개념과 실전 활용법을 확실히 익히고, 실무에서도 깔끔하고 간결한 코드를 작성해 보세요! 🚀
📌 Python 함수 심화 – map(), filter(), lambda 정리
✅ 1. map() 함수의 기능
- map() 함수는 리스트, 튜플 등 이터러블의 각 요소에 특정 함수를 적용하여 새로운 이터러블을 반환하는 함수입니다.
- 모든 요소에 대해 동일한 작업을 반복해야 할 때 사용합니다.
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
result = map(square, numbers)
print(list(result))
출력 결과
[1, 4, 9, 16, 25]
- map()은 numbers의 각 요소에 square() 함수를 적용하여 새로운 리스트를 만들어 반환합니다.
- map()은 list()로 감싸야 실제 결과를 확인할 수 있습니다.
✅ 2. filter() 함수의 기능
- filter() 함수는 주어진 함수의 조건을 만족하는 요소만 걸러서 반환합니다.
- 조건을 만족하는 값만 선택하고 싶을 때 유용합니다.
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5]
result = filter(is_even, numbers)
print(list(result))
출력 결과
[2, 4]
- filter()는 is_even() 함수를 통해 짝수만 걸러서 반환합니다.
- 마찬가지로 filter()도 list()로 감싸야 결과가 출력됩니다.
✅ 3. lambda를 사용하는 이유
- lambda 함수는 **익명 함수(anonymous function)**를 작성할 때 사용됩니다.
- 이름이 없는 간단한 함수를 한 줄로 작성할 때 사용됩니다.
❓ 왜 사용할까?
- ✅ 코드를 간결하게 작성할 수 있습니다.
- ✅ 한 번만 사용할 함수라면 굳이 def로 함수를 정의할 필요가 없습니다.
- ✅ map(), filter()와 같은 함수에서 간단한 함수를 인자로 전달할 때 유용합니다.
✅ 4. lambda를 이용해 함수를 만드는 방법
- 기본 문법
lambda 매개변수: 반환값
- 예시 1: 단순 함수로 사용
square = lambda x: x * x
print(square(5))
출력 결과
25
- lambda를 사용해서 square() 함수를 한 줄로 작성했습니다.
- 예시 2: map()과 함께 사용
numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * x, numbers)
print(list(result))
출력 결과
[1, 4, 9, 16, 25]
- lambda로 익명 함수를 작성해서 map()에 바로 전달했습니다.
- 별도로 함수를 정의하지 않아도 되기 때문에 코드가 훨씬 간결해집니다.
- 예시 3: filter()와 함께 사용
numbers = [1, 2, 3, 4, 5]
result = filter(lambda x: x % 2 == 0, numbers)
print(list(result))
출력 결과
[2, 4]
- lambda로 짝수 조건을 정의하고, 이를 filter()에 바로 전달하여 짝수만 걸러냈습니다.
✅ 5. lambda와 def의 차이점
구분 lambda def 함수
형태 | 한 줄로 작성 | 여러 줄로 작성 |
용도 | 간단하고 짧은 익명 함수 | 복잡하고, 여러 동작이 필요한 함수 작성 시 사용 |
이름 | 이름이 없음 | 함수 이름을 명시함 |
리턴 | 자동으로 반환 | return 키워드로 반환 필요 |
⚡️ 결론
- map(): 모든 요소에 동일한 작업을 적용할 때 사용
- filter(): 특정 조건을 만족하는 요소만 골라낼 때 사용
- lambda: 간단한 함수를 한 줄로 작성할 때 사용 (특히 map(), filter()에 유용)
🚀 Tip!
- 간단하고, 한 번만 사용할 함수라면 lambda로 빠르게 작성!
- 코드가 길어지거나 복잡한 함수라면 def를 사용해 명확하게 작성! 😊
'Python' 카테고리의 다른 글
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-12. 타입 어노테이션과 힌트 (0) | 2025.03.13 |
---|---|
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-11. 제너레이터 (0) | 2025.03.13 |
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-9. 튜플 (0) | 2025.03.13 |
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-8. 조기 리턴 피보나치 수열 (0) | 2025.03.13 |
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-7. 재귀 함수 (0) | 2025.03.13 |