Dia Egg - Shugo Chara

Algorithm/TeamNote

(Python) map함수와 lambda형식의 활용

별ㅇI 2023. 6. 14. 00:21
728x90
반응형

map()

map의 기본 설명은 보통

map(function, iterable)

# 첫 번째 매개변수로는 함수, 두 번째 매개변수로는 반복 가능한 자료형(리스트, 튜플 등)

이라고 설명되어있는데, 간단히 말하자면

 

map(인자에 하고싶은 기능, 변수(리스트,튜플 등 배열의 형태에서 하나씩 빼서 인자로 줌))

 

 이라고 생각하면 된다. 

예를 들어 아래처럼 적용된다.

def add_one(n):
    return n + 1
    
myList = [1, 2, 3, 4, 5]
result = list(map(add_one, myList))

##결과##
result = [2, 3, 4, 5, 6]

주의할 점

주의 할 점은 map 함수의 반환 값은 map객체 이기 때문에 해당 자료형을 list 혹은 tuple로 형 변환시켜주어야 한다. 만약 위 코드에서 list를 붙이지않는 다면 

print(result)

##출력값##
<map object at 0x0000020F30037520>

이 된다. 

 


lambda

lambda는 일종의 형식으로 

 

lambda 매개변수 : 표현식

 

으로 표현되는데 

result = (lambda x,y: x + y)(10, 20)
print(result)

##출력##
30

처럼 사용가능 하다. 참고로

print((lambda x,y: x + y)(10, 20))
#로 바로쓸 경우 아래처럼 lambda object가 출력되니 변수에 할당 후 써야한다.
##출력##
<function <lambda> at 0x000002D2EF9C5CF0>

 

 


 

섞어서 쓰면 아래와 같은 코드 활용도 가능하다. 

(아래는 split함수도 쓰이는데 이 함수는 문자열을 일정문자로 나눈 리스트로 반환해주는 함수이다.)

def toWeirdCase(s):
    return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))

이를 map()부터 해석하자면

a. 첫번째 매개변수: lambda x: "".join([a.lower() if i % 2 else a.upper() for i

b. 두번째 매개변수: s.split(" ") 

이므로

s를 " "로 나눈 리스트에서 하나씩 단어를 뽑아서(b) // 

i가 홀수면 소문자, 짝수면 댜문자로 바꾼값을 join으로 모은 것을 (b)

다시 join으로 모아 반환한다. 라는 뜻이다. 

 


 

이의 응용 문제로 아래 이 문제를 추천드린다.

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형