[Python] lambda
lambda는 익명 함수로 함수를 간단하게 정의하는 데 쓰입니다. C++에서의 labmda 함수는 상당히 복잡한 구문을 가졌는 데 반해 Python에서는 다음과 같은 형식으로 작성하면 됩니다.
lambda 인자 : 표현식
C++에 (http://engkimbs.tistory.com/62) 비교하면 너무나도 간단한 식이죠! 이게 바로 Python의 매력이 아닌가 싶습니다.
이러한 차이는 C++과 Python이 지향하는 바가 달라서 그렇습니다만 일단 'Python이 정말 간단하구나!'라고 생각하고 넘어가죠.
아래의 예는 람다 함수의 예제입니다.
print( (lambda x,y: x+y)(10,20) )
결과
30
map과 함께 써서 원하는 값들이 들어 있는 리스트를 뽑아내는 데도 사용됩니다. 여기서 map은 어떤 값의 목록(리스트)을 받아들여 그에 맞는 결과물을 출력하는 함수입니다. 밑에서는 0~9까지의 값을 받아 들여 각각의 값의 제곱수의 리스트를 출력하는 코드입니다.
ret = list(map(lambda x : pow(x,2), range(10)))
print(ret)
결과
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
만일 lambda 함수를 작성했는 데 이번 라인만이 아닌, 다음에도 사용하고 싶으면 어떤 변수에 assign하면 됩니다.
la = lambda x : x + 2
print(la(3))
결과
5
P.S
요즘 프로젝트 하면서 새삼스럽게 파이썬의 매력에 푹 빠지는 중입니다.
다음과 같은 C++스타일의 코드를 파이썬으로 단 한 줄로 해결 가능합니다.
while True:
if i == len(kospi):
break
update.append(kospi[i])
i += 1
바로 이런 식으로요!
map(lambda data : update.append(data), kospi[i:])
참으로 간편하지 않습니까?
출처: https://engkimbs.tistory.com/68?category=688857 [새로비]
'Python > Python 프로그래밍' 카테고리의 다른 글
[Python] UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) (0) | 2021.04.27 |
---|---|
[Python] PyCharm에서 패키지 설치하기 (0) | 2021.03.27 |
[Python] 데코레이터(Decorator) (0) | 2021.03.27 |
[Python] 클로저(Closure) (0) | 2021.03.27 |
[Python] Generator, yield (0) | 2021.03.27 |
[Python] print 함수 사용시 소수점 자리 찍기 (0) | 2021.03.27 |
스크래피(scrapy) 설치 및 scrapy 프로젝트 시작하기 (0) | 2021.03.27 |
파이썬을 이용한 selenium 사용법 및 동적 웹 스크래핑 (0) | 2021.03.27 |