파이썬에서 2차원 배열을 초기화할 때
a=[0]*3
a[1]=1
print(a) # [0,1,0]
다음과 같이 당연해 보이지만 2차원 배열의 경우
a=[[0]*3]*3
a[1][1]=1
print(a) # [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
한 행을 객체로 인식하기 때문에 모든 행을 같은 객체로 바꿔버린다.
a=[[0]*3 for _ in range(3)]
print(a) # [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
a[1][1]=1
print(a) # [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
다음과 같이 초기화해야 원하는 값만 변경할 수 있다.
a=[[0]*3]*3
a[1][1]=1
print(a) # [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
a[2]=[2,2,2]
print(a) # [[0, 1, 0], [0, 1, 0], [2, 2, 2]]
a[1][1]=3
print(a) # [[0, 3, 0], [0, 3, 0], [2, 2, 2]]
하나의 인덱스를 [2,2,2]로 바꾸고 a[1][1]에 3을 넣으면 a[0]과 a[1]만 바뀌는 모습
'python' 카테고리의 다른 글
파이썬 0으로만 이루어진 큰 배열 만들기 [파이썬] (0) | 2022.08.13 |
---|---|
배열에 숫자 원소 추가하기 [python] (0) | 2022.08.13 |
파이썬 set, split, enumerate 정리 (0) | 2022.08.10 |
큰 수의 법칙 (0) | 2022.02.02 |
파이썬 문자열과 리스트의 차이 (0) | 2022.01.29 |