티스토리 뷰

PS 문제풀이를 하다가 2차원 배열을 생성하는 데에서 오류가 발생하는 일이 종종 있다.

실수를 줄이고자 작성하는 Python에서 2차원 배열 생성하는 법과 주의할 점에 관한 글이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# graph = [[0, 0, 0], [0, 0, 0]]
 
# (1) 모든 원소가 0인 2*3 2차원 배열 생성
graph = []
for _ in range(2):
    row = []    # row 초기화 과정 중요!
    for _ in range(3):
        row.append(0)
    graph.append(row)
 
 
# (2) 한 줄 코드로 모든 원소가 0인 2*3 2차원 배열 생성
graph = []
graph = [ [0 for _ in range(3) ] for _ in range(2)]
cs

오늘은 아래와 같이 코드를 작성하여 graph[x][y]에서 x에 어떤 숫자를 넣어도 모든 행의 y+1번째 열의 숫자가 바뀌는 오류가 발생했다. 이유는 아래 스크립트의 주석에 작성해두었다.

 

1
2
3
4
5
6
7
8
graph = []
rowline = [ 0 * for _ in range(4) ]
for _ in range(4):
    graph.append(rowline)
 
# graph = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
# graph 안에 rowline 이라는 같은 리스트가 4개 들어가있는 것이나 마찬가지이므로
# graph[0][1]의 값을 1로 바꾸려고 하면 graph[1][1], graph[2][1], graph[3][1]도 1이 된다
cs
댓글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31