2차원 리스트는 다음과 같이 가로*세로 형태로 이루어져 있으며 행(col)과 열(row) 모두 0부터 시작합니다.
p.313
2차원 리스트의 요소에 접근하거나 값을 할당할 때는 리스트 뒤에 [ ](대괄호)를 두 번 사용하며 [ ] 안에 세로(row) 인덱스와 가로(column) 인덱스를 지정해주면 됩니다.
- 리스트[세로인덱스][가로인덱스]
----------------------------------------------------------------------------------------
col, row가 각각 가로, 세로인것도 알고 크기로 셀 때는 col이 세로 크기로, row가 가로 크기로 재는 것도 이해했습니다.
그러나 313쪽 페이지에 2차원 리스트 요소 접근에서 '세로(row) 인덱스와 가로(column) 인덱스' 이 말이 이해가 안됩니다.
만약 이 말대로라면 '리스트[세로인덱스 = row][가로인덱스= col] '을 통해 2차원 리스트 요소에 접근할 수 있다고 했는데 행렬로 그려보니
c0r0 | c0r1 | c0r2 | c0r3 | c0r4 |
---|---|---|---|---|
c1r0 | c1r1 | c1r2 | c1r3 | c1r4 |
c2r0 | c2r1 | c2r2 | c2r3 | c2r4 |
(편의상 c를 행, r을 열로 나타냈습니다.)
만약 c1r2를 꺼내고자 하면
리스트[1][2]라고 해야 할 텐데
책에 적혀있는대로 세로인덱스 = row라면
반대로 리스트[2][1]을 해야 c1r2가 나오지 않을까 생각됩니다.
심사문제 23.7 중에서도
for i in range(row):
for j in range(col):
if matrix[j][i]=='.': # list[col][row]형태
for i in range(row):
for j in range(col):
if matrix[i][j]=='.': # list[row][col]형태
형태가 맞다고 하는데아직 행렬 개념이 잘 잡히지 않아 후자가 왜 맞는 정답인지 잘 모르겠습니다...
결국 list[row][col] 형태가 맞는건가요?
아직도 행렬이 헷갈리네요.....
공지사항의 게시글을 참고해주세요.
https://dojang.io/mod/forum/discuss.php?d=578
m * m이 아니라 m * n과 같이 직사각형 형태로 테스트하면 확실하게 차이를 알 수 있습니다.
4 * 4 행렬이 아니라 4 * 10으로 테스트하면 알 수 있습니다.
사람이 아니라 컴퓨터가 데이터를 처리하는 방식으로 이해하시면 됩니다.