Python 내장함수에 lambda 함수 사용하기

oen·2020년 12월 20일
0

🐍 Python

목록 보기
1/4
post-thumbnail

파이썬 내장 함수들을 사용할 때 lambda 함수를 같이 활용하는법을 알아보자.

lambda 인자: 반환식

def lambda(x):
	return x

간단한 예로 인자 x를 받고 x를 그대로 리턴하는 함수를

lambda x: x

람다 함수로 간단하게 쓸 수 있다.
람다 함수는 익명 함수로 함수 이름도 없다.

Python 내장함수와의 활용

map() 함수

map(function, iterable, ...)

map() 함수는 iterable의 각 요소를 fuction 함수로 처리해서 결과를 리턴하는 내장함수이다.

간단예시

items = [1.2, 2.5, 3.7, 4.6]
r = map(int, items)
print(r) # <map object at 0x10e6cf160>
print(list(r)) # [1, 2, 3, 4]

이렇게 int 함수와 items 리스트를 map 함수에 넘기면 items 리스트의 모든 요소를 int 함수로 처리해서 리턴한다.
map() 함수는 이터레이터를 리턴하기 때문에 요소들을 한번에 보고싶으면 list()로 감싸서 리스트로 만들어주면 된다.

lambda 함수 사용

map 함수의 function 인자 자리에 lambda 함수를 전달하면 items의 각 요소가 lambda 함수로 처리한 후 그 결과를 돌려주는 이터레이터가 리턴된다.

  • python 공식문서 - map
    - iterable 의 모든 항목에 function 을 적용한 후 그 결과를 돌려주는 이터레이터를 돌려줍니다.
    - 추가 iterable 인자가 전달되면, function 은 그 수 만큼의 인자를 받아들여야 하고 모든 이터러블에서 병렬로 제공되는 항목들에 적용됩니다.
    - 다중 이터러블의 경우, 이터레이터는 가장 짧은 이터러블이 모두 소모되면 멈춥니다.

max() 함수

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

max() 함수는 iterable한 하나의 위치 인자(iterable)가 주어지면 iterable에서 가장 큰 요소를 리턴하고,
두 개 이상의 위치 인자(arg1 arg2, ..)가 주어지면 위치 인자들 중에서 가장 큰 것을 리턴하는 내장함수이다.

lambda 함수 사용

  • python 공식문서 - max
    - iterable 에서 가장 큰 항목이나 두 개 이상의 인자 중 가장 큰 것을 돌려줍니다.
    - 하나의 위치 인자가 제공되면, 그것은 이터러블 이어야 합니다. iterable에서 가장 큰 항목을 돌려줍니다. 두 개 이상의 위치 인자가 제공되면, 위치 인자 중 가장 큰 것을 돌려줍니다.
    - key 인자는 list.sort() 에 사용되는 것처럼 단일 인자 순서 함수를 지정합니다.
    - default 인자는 제공된 iterable이 비어있는 경우 돌려줄 객체를 지정합니다.

+ 조건부 표현식 사용하기 (if else)

map 함수를 if else 구문과 함께 사용해보겠다.

lambda 인자: 식1 if 조건식 else 식2

# map을 사용하여 리스트 a에서 3의 배수는 문자열로 리턴
items = [0, 1, 2, 3, 4, 5]
print(list(map(lambda x: str(x) if x % 3 == 0 else x, items)))
['0', 1, 2, '3', 4, 5]
profile
🐾

0개의 댓글