2023년 6월 업데이트

 

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 중급 강좌 - 2. 람다(Lamda)를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 2_lambda.py를 생성하고 코드를 실행합니다.

 

 

 

TL;DR

Python의 람다는 작은 이름없는 함수입니다. 람다를 사용해 코드를 더 간결하게 만들 수 있으며, Python의 일반 함수를 람다로 치환할 수 있습니다.
 

 

Python 중급 강좌 - 2. 람다(Lamda)

그럼, 두 번째 중급강좌, 시작하겠습니다.

 

람다는 무엇이고 Python의 어떤 문제를 해결하나요?

람다를 이해하려면, 먼저 함수의 구조를 다시 살펴보시면 더 빠르게 확인할 수 있습니다.

 

우선 아래의 코드를 살펴보겠습니다. Python에서 정렬(sort)을 하는 코드 예제입니다.

presenters = [
    {'name': 'Susan', 'age': 50},
    {'name': 'Christopher', 'age': 47}
]

# presenter 필드에 대해 sorting(정렬) 방법을 알지 못하기 때문에, 이 코드는 에러를 리턴합니다.
presenters.sort()
print(presenters)

이렇게 코드에서는 list의 item들(dict 데이터형)에 대해 정렬을 하지만, 오류가 발생합니다.

무엇보다도, dict에 대해서는 sort()가 동작하지 않기 때문이며, name과 age 중 어디에 대해서 sort를 할지 불명확하기 때문입니다.

 

함수를 생성해 dict에 대해서 sort 수행

이런 코드를 아래와 같이 함수를 만들어서 처리 가능합니다.

def sorter(item):
    return item['name']

presenters = [
    {'name': 'Susan', 'age': 50},
    {'name': 'Christopher', 'age': 47}
]

presenters.sort(key=sorter)
print(presenters)

이런 패턴으로 sorter 함수를 만들어서 sort 할 수 있고, 코드는 잘 동작합니다.

 

하지만, 아주 단순한 한 줄짜리 함수인데 이걸 함수로 만드는 게 살짝(?) 번잡하다는 느낌이 들기도 합니다.

인자도 하나이고 리턴값도 하나인 단순한 함수인데, def나 return과 같은 추가 코드 등 여러 부가적인 부분이 많이 보입니다.

이럴 경우 람다를 이용해 코드를 더 간결하게 처리 가능합니다.

 

람다로 변환된 코드

presenters = [
    {'name': 'Susan', 'age': 50},
    {'name': 'Christopher', 'age': 47}
]

# 알파벳 순으로 정렬
presenters.sort(key=lambda item: item['name'])
print('-- alphabetically --')
print(presenters)

# name의 길이로 정렬(짧은 것부터 긴 것까지)
presenters.sort(key=lambda item: len(item['name']))
print('-- length --')
print(presenters)

이렇게 깔끔하게, 한 줄의 코드로 함수를 변경할 수 있습니다. 이것이 람다입니다.

 

자 그럼 다시 원래 이 강좌의 목표로 돌아가 볼까요?

 

람다(Lambda)

lambda 함수는 작은 이름 없는 함수입니다. Argument(인수)는 여러 개를 사용할 수 있지만, 오직 하나의 표현식(expression)만 실행 가능합니다. 이것이 람다입니다. - 코드를 먼저 보셔서 이해하기 더 편하실 거에요.

 

일반적인 함수를 람다로 변환

그렇다면, 기존의 함수 코드가 람다로 어떻게 치환될까요? 아래의 이미지가 도움 되실 겁니다.

Slide6.JPG

이렇게 기존 함수를 람다로 치환할 수 있습니다.

 

람다는 코드 패턴을 찾기 위해 검색할 경우 StackOverflow 등의 결과에서 종종 볼 수 있습니다.

처음에는 복잡해 보일 수 있으나, 간결하게 함수를 한 줄의 인라인으로 생성할 수 있어서 자주 사용됩니다.

 

☑️ 챗GPT 활용: python 함수를 람다로 변환하는 예제를 알려줘
☑️ 챗GPT 활용: show transforming a complex Python function into a lambda expression

 

일반 함수를 써도 물론 무방합니다. 하지만, 이 강좌의 목적이 이런 람다와 같은 코드를 읽고 활용하는 것이 차근차근 살펴보시고, 이후 익숙해 주시면 코드에도 적용해 보시길 바랍니다.

 

수고하셨습니다.

 

 

파이썬 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터 

파이썬-책구매링크.png

 

참고자료

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/more-python-for-beginners/02 - Lambdas at master · CloudBreadPaPa/c9-python-getting-started (github.com)

Python Lambda (w3schools.com)

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 39940
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 21908
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 401
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 454
» Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 556
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 1161
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패스워드) 관리 - dotenv 코난(김대우) 2021.01.02 975
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 358
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 831
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 957
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 421
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 438
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 552
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 374
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 334
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 364
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 428
83 Python 초급 강좌 목차 - 8. 조건문(Condition):1 (IF-ELSE) 코난(김대우) 2021.01.01 373
82 Python 초급 강좌 목차 - 7. 에러 핸들링(Error Handling) file 코난(김대우) 2021.01.01 359
81 Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리 코난(김대우) 2021.01.01 402
80 Python 초급 강좌 목차 - 5. 숫자(Numeric) 데이터 처리 코난(김대우) 2021.01.01 330
79 Python 초급 강좌 목차 - 4. 문자열(String) 데이터 처리 코난(김대우) 2021.01.01 444





XE Login