티스토리 뷰
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 |
댓글