베이직 파이썬 - map + lambda 함수

안녕하세요 jay입니다.
최근 map과 lambda에 대해서 각각 정리를 해보았습니다.
이번 시간은 map과 lambda를 동시에 사용하는 예시들을 보여드리도록 하겠습니다.
map과 lambda에 대해 자세히 알고 싶으시면
위의 링크들을 참고해주시길 바랍니다.
그래도 간단히 다시 정리 해보도록 하겠습니다.

1. map이란

map : 함수명과 반복에 사용될 아이템을 전달인자로 받아
함수에 의해 수행된 결과를 (분배하여) 반환해주는 함수

map(fun(함수명), iterable)
fun에는 함수명과 iterable에는 iterable한 속성을 가진 자료형이 들어간다.
예를 들어 list,tuple dictionary 등등이 있다.

2. map + lambda의 예시

1) 리스트 안의 item들의 값을 제곱해주는 예시
list(map(lambda i: i**2, [1, 2, 3])) # [1,4,9]

2) 0~9까지의 값들을 10으로 나누는 예시
result = list(map(lambda x: x/10, range(10)))
print(result) # [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

3) 0~9까지 값들을 10으로 나누는 예시2

result = map(lambda x: x/10, range(10)) 
print(result) # <map object at 0x1039566d0>
for x in result:
    print(x, end= " ") # 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 

3. iterator 객체

위의 3번의 예시를 보면 이상한 점이 있다.
map함수를 result에 저장을 하고 print를 해보니
10으로 나눈 값들이 아닌 map의 객체가 나왔다.
그리고 for문의 반복 기능을 통해 값들이 하나씩 출력되었다.
이는 map 자체는 iterable한 속성을 가진 iterator객체이다.
(주의 list, tuple등은 iterable한 속성을 가졌지만 iterator 객체는 아니다!!!)
그래서 map자체를 출력하면 객체가 나오고, map 객체가 가지고 있는 값들을 출력하고 싶으면
반복문등을 사용하여 출력하거나 list와 같은 iterable한 속성을 더해주어야 값을 볼 수 있다.
나중에 따로 iterator 객체에 대해 정리해보도록 하겠습니다.

댓글