map (function, iterable, * iterables)
- iterable의 모든 항목에 함수를 적용하여 결과를 산출하는 iterator를 반환한다. 추가 iterables 인수가 전달되면 function은 많은 인수를 가져와야 하며 모든 iterables의 항목에 병렬로 적용된다. 반복 가능한 항목이 여러 개인 경우, 가장 짧은 반복 가능한 항목이 소진되면 반복자가 중지된다.
[예시1] 문자열을 각 정수로 변환하여 리스트로 만들기
- for문으로 정수 리스트 생성
n = "12345"
array = []
for i in n:
array.append(int(i))
print(array) # 출력 : [1, 2, 3, 4, 5]
- map으로 정수 리스트 생성
n = "12345"
array = list(map(int, n))
print(array) # 출력 : [1, 2, 3, 4, 5]
- map() 함수는 두번째 인자인 iterables의 각 항목에 첫번째 인자인 함수를 적용한다. 해당 소스코드는 각 문자에 int() 함수를 적용하여 반환한다. → str은 iterable 객체이다.
- "1" -- int("1") → 1
- "2" -- int("2") → 2
- "3" -- int("3") → 3
- "4" -- int("4") → 4
- "5" -- int("5") → 5
[예시2] 문자열을 각 정수로 변환하여 더하기
num = "12345";
print(sum(map(int, num))) #15
- sum은 iterable의 항목들을 왼쪽에서 오른쪽으로 합하고 합계를 돌려준다.
헤갈렸던 부분
- list("문자열")
코드를 사용하면 각 문자를 담은 리스트를 만들 수 있는데 문자열 숫자를 정수 리스트로 바꿀 때 list(map(int, list("12345")))
와 같이 코드를 짰었다. 그런데 map() 함수가 각 문자에 int 함수를 적용하기 때문에 list(map(int, "12345"))
만 써도 된다.
회고
코딩테스트를 준비하면서 map을 많이 사용하게 되었다. 하지만 정작 map이 무엇인지 어렴풋이 알다보니 헤갈리는 순간이 와서 이렇게 게시글을 쓰게 되었다.
Ref.
1. Python 공식문서(map) / https://docs.python.org/ko/3/library/functions.html?highlight=map#map
2. 파이썬 코딩 도장 / https://dojang.io/mod/page/view.php?id=2286
3. Python 공식문서(sum) / https://docs.python.org/ko/3/library/functions.html?highlight=sum#sum
* 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀
'Python' 카테고리의 다른 글
[Python/Selenium] 네이버 로그인 (0) | 2023.12.03 |
---|---|
[Python] bisect - 배열 이진 분할 알고리즘 (0) | 2023.05.25 |
[Python] 리스트 컴프리헨션 (0) | 2023.02.13 |
[Python] 리스트 정렬 (0) | 2023.02.01 |
[Python/Pandas] 점 개수 세기 (0) | 2022.12.04 |
map (function, iterable, * iterables)
- iterable의 모든 항목에 함수를 적용하여 결과를 산출하는 iterator를 반환한다. 추가 iterables 인수가 전달되면 function은 많은 인수를 가져와야 하며 모든 iterables의 항목에 병렬로 적용된다. 반복 가능한 항목이 여러 개인 경우, 가장 짧은 반복 가능한 항목이 소진되면 반복자가 중지된다.
[예시1] 문자열을 각 정수로 변환하여 리스트로 만들기
- for문으로 정수 리스트 생성
n = "12345"
array = []
for i in n:
array.append(int(i))
print(array) # 출력 : [1, 2, 3, 4, 5]
- map으로 정수 리스트 생성
n = "12345"
array = list(map(int, n))
print(array) # 출력 : [1, 2, 3, 4, 5]
- map() 함수는 두번째 인자인 iterables의 각 항목에 첫번째 인자인 함수를 적용한다. 해당 소스코드는 각 문자에 int() 함수를 적용하여 반환한다. → str은 iterable 객체이다.
- "1" -- int("1") → 1
- "2" -- int("2") → 2
- "3" -- int("3") → 3
- "4" -- int("4") → 4
- "5" -- int("5") → 5
[예시2] 문자열을 각 정수로 변환하여 더하기
num = "12345";
print(sum(map(int, num))) #15
- sum은 iterable의 항목들을 왼쪽에서 오른쪽으로 합하고 합계를 돌려준다.
헤갈렸던 부분
- list("문자열")
코드를 사용하면 각 문자를 담은 리스트를 만들 수 있는데 문자열 숫자를 정수 리스트로 바꿀 때 list(map(int, list("12345")))
와 같이 코드를 짰었다. 그런데 map() 함수가 각 문자에 int 함수를 적용하기 때문에 list(map(int, "12345"))
만 써도 된다.
회고
코딩테스트를 준비하면서 map을 많이 사용하게 되었다. 하지만 정작 map이 무엇인지 어렴풋이 알다보니 헤갈리는 순간이 와서 이렇게 게시글을 쓰게 되었다.
Ref.
1. Python 공식문서(map) / https://docs.python.org/ko/3/library/functions.html?highlight=map#map
2. 파이썬 코딩 도장 / https://dojang.io/mod/page/view.php?id=2286
3. Python 공식문서(sum) / https://docs.python.org/ko/3/library/functions.html?highlight=sum#sum
* 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀
'Python' 카테고리의 다른 글
[Python/Selenium] 네이버 로그인 (0) | 2023.12.03 |
---|---|
[Python] bisect - 배열 이진 분할 알고리즘 (0) | 2023.05.25 |
[Python] 리스트 컴프리헨션 (0) | 2023.02.13 |
[Python] 리스트 정렬 (0) | 2023.02.01 |
[Python/Pandas] 점 개수 세기 (0) | 2022.12.04 |