ko ko ko en en en ko ko cs zh cs ko ko ko ko ko ko ko en ko en ko ko en ko ko ko en ko ko ko en ko ko en ko ko en ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fi ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko en en ko en zh en en
COS Pro 2급 파이썬: 20.7 리스트에 map 함수 사용하기
◀ 20.6 리스트 표현식 사용하기20.8 튜플의 정보를 구하고 연산하기 ▶︎
이번에는 리스트에 map 함수를 사용해보겠습니다. map은 리스트의 요소를 지정된 함수로 처리해주는 함수입니다(튜플에도 map 함수를 사용할 수 있으며 원본 튜플을 변경하는 것이 아니라 새 튜플을 생성합니다).
예를 들어 실수가 저장된 리스트가 있을 때 이 리스트의 모든 요소를 정수로 변환하려면 어떻게 해야 할까요? 먼저 for 반복문을 사용해서 변환해보겠습니다.
for에 range(len(a))를 사용해서 인덱스를 가져왔습니다. 그리고 가져온 인덱스로 요소 하나하나에 접근한 뒤 int로 변환하여 다시 저장했습니다.
매번 for 반복문으로 반복하면서 요소를 변환하려니 조금 번거롭습니다. 이때는 map 함수를 사용하면 편리합니다.
a = list(map(int, a)) 한 줄로 변환이 끝났습니다. map에 int와 리스트를 넣으면 리스트의 모든 요소를 int를 사용해서 변환합니다. 그리고 list를 사용해서 map의 결과를 다시 리스트로 만들어줍니다.
▼ 그림 20-5 리스트에 map 함수 사용
사실 map에는 리스트뿐만 아니라 모든 반복 가능한 객체를 넣을 수 있습니다. 여기서는 range를 사용해서 숫자를 만든 뒤에 숫자를 문자열로 변환해보겠습니다.
>>> a = list(map(str, range(10))) >>> a ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
range로 0부터 9까지 숫자를 만들고, str을 이용해서 모두 문자열로 변환했습니다. 리스트를 출력해보면 각 요소가 ' '(작은따옴표)로 묶인 것을 볼 수 있습니다.
지금까지 input().split()으로 값을 여러 개 입력받고 정수, 실수로 변환할 때도 map을 사용했었죠? 사실 input().split()의 결과가 문자열 리스트라서 map을 사용할 수 있었습니다.
다음과 같이 input().split()을 사용한 뒤에 변수 한 개에 저장해보면 리스트인지 확인할 수 있습니다.
>>> a = input().split() 10 20 (입력) >>> a ['10', '20']
10 20을 입력하면 ['10', '20']처럼 문자열 두 개가 들어있는 리스트가 만들어집니다.
이제 map을 사용해서 정수로 변환해봅시다.
>>> a = map(int, input().split()) 10 20 (입력) >>> a   >>> list(a) [10, 20]
다시 10 20을 입력하면 맵 객체(map object)가 만들어집니다. 이 상태로는 안에 들어있는 값을 볼 수 없으므로 list를 사용해서 리스트로 출력했습니다. 리스트를 보면 [10, 20]처럼 정수 두 개가 들어있습니다.
이 리스트를 변수 두 개에 저장하면 지금까지 사용한 a, b = map(int, input().split())와 같은 동작이 됩니다.
>>> a, b = [10, 20] >>> a 10 >>> b 20
사실 map 함수가 반환하는 맵 객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹(unpacking)이 가능합니다. 그래서 a, b = map(int, input().split())처럼 list를 생략한 것입니다.
a, b = map(int, input().split())을 풀어서 쓰면 다음과 같은 코드가 됩니다.
x = input().split()    # input().split()의 결과는 문자열 리스트 x = map(int, x)        # 리스트의 요소를 int로 변환, 결과는 맵 객체 a, b = x               # 맵 객체는 변수 여러 개에 저장할 수 있음
내용이 조금 어렵죠? 이처럼 파이썬은 여러 가지 함수를 조합해서 결과를 만들어냅니다. 초보때는 이해하기가 쉽지 않은 부분이니 이런 것도 있구나 하고 넘어가도 됩니다.
◀ 20.6 리스트 표현식 사용하기20.8 튜플의 정보를 구하고 연산하기 ▶︎
COS Pro 2급 C 언어
COS Pro 2급 파이썬
Unit 1. 소프트웨어 교육과 파이썬
Unit 2. 파이썬 설치하기
Unit 3. Hello, world!로 시작하기
Unit 4. 기본 문법 알아보기
Unit 5. 숫자 계산하기
Unit 6. 변수 사용하기
Unit 7. 문자열 사용하기
Unit 8. 입력 값을 변수에 저장하기
Unit 9. 출력 방법 알아보기
Unit 10. 산술 연산자 알아보기
Unit 11. 불과 비교, 논리 연산자 알아보기
Unit 12. if 조건문으로 특정 조건일 때 코드 실행하기
Unit 13. else를 사용하여 두 방향으로 분기하기
Unit 14. elif를 사용하여 여러 방향으로 분기하기
Unit 15. for 반복문으로 Hello, world! 100번 출력하기
Unit 16. while 반복문으로 Hello, world! 100번 출력하기
Unit 17.break와 continue로 반복문 제어하기
Unit 19. 리스트와 튜플 사용하기
Unit 20. 리스트와 튜플 응용하기
20. 2 리스트의 할당과 복사
20.4 반복문으로 리스트의 요소를 모두 출력하기
20.5 리스트의 가장 작은 수, 가장 큰 수, 합계 구하기
20.6 리스트 표현식 사용하기
20.7 리스트에 map 함수 사용하기
20.8 튜플의 정보를 구하고 연산하기
20.10 연습문제: 리스트에서 특정 요소만 뽑아내기
Unit 21. 2차원 리스트와 튜플 사용하기
Unit 22. 문자열 응용하기
Unit 23. 회문 판별과 N-gram 만들기
Unit 24. 함수 사용하기
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang