DevLog:-)

[Python] 배열 선언하기(+2차원 배열 선언 주의점) 본문

Language/Python

[Python] 배열 선언하기(+2차원 배열 선언 주의점)

hyeon200 2023. 5. 13. 18:01
반응형

 

✅1차원 배열

▷간편하게 *사용

arr = [0]*3
print(arr)

>>[0,0,0]

 

 

 ✅2차원 배열

▷for문 사용

arr1 = [[0 for _ in range(3)]for _ in range(3)]
arr = [[0]*3 for _ in range(3)]

print(arr1)
print(arr)

>>[[0,0,0][0,0,0][0,0,0]]

>>[[0,0,0][0,0,0][0,0,0]]

 

 

 

❗(2차원 배열 선언 주의점)❗

▷2차원 배열을 구현할 때 *을 사용하게 되면 다음과 같은 문제가 있다!!!

arr = [[0]*3]*3
arr[1][1]=3
print(arr)

>>[[0,3,0][0,3,0][0,3,0]]

파이썬에서는 *연산자를 이용하여 배열을 선언하면 

얕은 복사(shallow copy)가 일어난다.

 

값을 각각 할당하는 게 아니고 배열 안에 요소들이

같은 객체를 가리키게되면서 요소를 변경하면 다른 값도 변경되는 것이다.

 

따라서 2차원 배열을 선언할 떄는 *을 주의하자!

 

반응형