ko ko ko en en en ko ko cs zh cs ko ko ko ko ko ko ko ko ko ko ko km ko ko de ko en ko ko km ko ko de ko ko ko or ko ko de ko ko en ko ko en ko ko de ko ko en 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 fr ko ko ko en en ko en zh en en
COS Pro 2급 파이썬: 21.2 반복문으로 2차원 리스트의 요소를 출력하기
◀ 21.1 2차원 리스트를 만들고 요소에 접근하기21.3 반복문으로 2 차원 리스트 만들기 ▶︎
이제 반복문을 사용하여 2차원 리스트의 요소를 모두 출력해보겠습니다. 먼저 for 반복문을 한 번만 사용하는 방식입니다.
2차원 리스트에 for를 사용하면 가로 한 줄씩 반복하게 됩니다. 전체 리스트를 기준으로 보면 안쪽 리스트가 통째로 반복됩니다. 이 때 for x, y in a:와 같이 in 앞에 변수를 두 개 지정해주면 가로 한 줄(안쪽 리스트)에서 값 두 개를 꺼내 옵니다.
▼ 그림 21-3 2차원 리스트에서 for 반복문을 한 번만 사용
당연히 in 앞에 변수의 개수는 2차원 리스트에서 가로 크기(안쪽 리스트의 요소 개수)와 일치해야겠죠? for 반복문을 한 번만 사용하는 방식은 2차원 리스트의 가로 크기가 크지 않을 때 유용합니다.
이번에는 for 반복문을 두 번 사용해서 2차원 리스트의 요소를 출력해보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요.
a = [[10, 20], [30, 40], [50, 60]]   for i in a:        # a에서 안쪽 리스트를 꺼냄     for j in i:    # 안쪽 리스트에서 값을 하나씩 꺼냄         print(j, end=' ')     print()
10 20 30 40 50 60
먼저 for i in a:는 전체 리스트에서 가로 한 줄씩 꺼내 옵니다(안쪽 리스트를 통째로 꺼내 옴). 다시 for j in i:와 같이 가로 한 줄(안쪽 리스트) i에서 값을 하나씩 꺼내면 됩니다.
▼ 그림 21-4 2차원 리스트에서 for 반복문을 두 번 사용
그럼 이번에는 for range에 세로 크기와 가로 크기를 지정해서 2차원 리스트의 요소를 인덱스로 접근해보겠습니다.
a = [[10, 20], [30, 40], [50, 60]]   for i in range(len(a)):            # 세로 크기     for j in range(len(a[i])):     # 가로 크기         print(a[i][j], end=' ')     print()
10 20 30 40 50 60
for range에 세로 크기와 가로 크기를 넣으면 인덱스로 사용할 수 있습니다. 여기서 주의할 점은 len으로 2차원 리스트 a의 크기를 구하면 리스트 안에 들어있는 모든 요소의 개수가 아니라 안쪽 리스트의 개수(세로 크기)가 나온다는 점입니다. 즉, len(a)는 6이 아니라 3입니다. 그리고 len으로 안쪽 리스트 a[i]의 크기를 구해야 안쪽 리스트에 들어있는 요소의 개수(가로 크기)가 나옵니다. 즉, len(a[i])는 2입니다.
따라서 for i in range(len(a)):는 세로 크기 3만큼 반복하고, for j in range(len(a[i])):는 가로 크기 2만큼 반복합니다. 요소에 접근할 때는 a[i][j]처럼 리스트[세로인덱스][가로인덱스] 형식으로 접근합니다.
이번에는 while 반복문을 사용하여 2차원 리스트의 요소를 출력해보겠습니다.
a = [[10, 20], [30, 40], [50, 60]]   i = 0 while i < len(a):    # 반복할 때 리스트의 크기 활용(세로 크기)     x, y = a[i]     print(x, y)     i += 1           # 인덱스를 1 증가시킴
10 20 30 40 50 60
while 반복문을 사용할 때도 리스트의 크기를 활용하면 편리합니다. 여기서도 len(a)처럼 2차원 리스트의 크기를 구했으니 안쪽 리스트의 개수(세로 크기)가 나오겠죠? 따라서 6이 아닌 3이 나옵니다.
리스트에 인덱스를 지정하여 값을 꺼내 오는데 다음과 같이 변수 두 개를 지정해주면 가로 한 줄(안쪽 리스트)에서 값 두 개를 한꺼번에 가져올 수 있습니다.
x, y = a[i]
값을 가져왔으면 반드시 i += 1과 같이 인덱스를 1 증가시켜 줍니다.
그럼 while 반복문을 두 번 사용할 수도 있겠죠?
a = [[10, 20], [30, 40], [50, 60]]   i = 0 while i < len(a):           # 가로 크기     j = 0     while j < len(a[i]):    # 세로 크기         print(a[i][j], end=' ')         j += 1              # 가로 인덱스를 1 증가시킴     print()     i += 1                  # 세로 인덱스를 1 증가시킴
10 20 30 40 50 60
먼저 while i < len(a):와 같이 세로 크기만큼 반복하면서 while j < len(a[i]):와 같이 가로 크기(안쪽 리스트의 요소 개수)만큼 반복하면 됩니다. 가로 크기는 len(a[i])와 같이 안쪽 리스트의 크기를 구하면 되겠죠?
요소에 접근할 때는 리스트[세로인덱스][가로인덱스] 형식으로 접근하면 됩니다. 따라서 세로 인덱스로 변수 i를, 가로 인덱스로 변수 j를 지정합니다.
값을 가져왔으면 반드시 j += 1과 같이 가로 인덱스를 1 증가시켜 줍니다. 마찬가지로 바깥쪽 while에서는 i += 1과 같이 세로 인덱스를 1 증가시켜 줍니다. 이때 i += 1을 안쪽 while에서 수행하면 반복이 제대로 되지 않으므로 주의해야 합니다.
i = 0 while i < len(a):     j = 0     while j < len(a[i]):         print(a[i][j], end=' ')         j += 1         i += 1    # 안쪽 while에서 i를 증가시키면 안 됨. 잘못된 방법     print()
◀ 21.1 2차원 리스트를 만들고 요소에 접근하기21.3 반복문으로 2 차원 리스트 만들기 ▶︎
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. 리스트와 튜플 응용하기
Unit 21. 2차원 리스트와 튜플 사용하기
21.1 2차원 리스트를 만들고 요소에 접근하기
21.2 반복문으로 2차원 리스트의 요소를 출력하기
21.3 반복문으로 2 차원 리스트 만들기
21.5 연습문제: 3 차원 리스트 만들기
Unit 22. 문자열 응용하기
Unit 23. 회문 판별과 N-gram 만들기
Unit 24. 함수 사용하기
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang