jayb100   3년 전

문제와 상관없는 질문 정말 죄송합니다.. ㅠㅠ

안녕하세요 파이썬을 공부중인데 정말 멘붕이 올정도로 이해가 안가서.. 질문 올립니다.. ㅠㅠ

2차원 배열에서 왜 아래와 같이 코딩하면 0행 0 열의 요소만 바뀌는게 아니라 모든 행의 0열 요소가 바뀌는 건가요?

제가 생각하기엔 분명히 하나의 요소만 바뀌어야 할것 같은데..

예를들면 10행 10열의 board에 0, 0 부터 1,1 까지 4칸을 1로 만들고 싶어

for i in range(2):

    for j in range(2):

        board[i][j] += 1 

했는데 4가지 요소가 1이 나오는게 아니라 중복되서 더해지네요 ㅠㅠ 혼란스럽습니다.. 꼭좀 답변 부탁드려요 ㅠ

감사합니다!

shg9411   3년 전

board = [[0 for _ in range(10)] for _ in range(10)]

jayb100   3년 전

이렇게 선언하는 것과 알려주신대로 선언하는게 차이가 있나요? 

저는 여러 방식이 있는데 그 중에 다른 두개라도 배워서요..

답변 감사합니다!

djm03178   3년 전

질문의 코드는 board[0]의 내용이 복사되는 것이 아닌 그 리스트에 대한 레퍼런스만 복사됩니다. 그래서 board[0] ~ board[9]가 모두 같은 리스트를 나타내게 됩니다.

jayb100   3년 전

답변 정말 감사드립니다! 레퍼런스가 복사된다는 말씀이 혹시 그 얕은 복사처럼 되서 같은 주소를 공유하는 개념이 되는걸 말씀해주시는 건가요?

djm03178   3년 전

네, 얕은 복사입니다.

jayb100   3년 전

답변 정말 감사합니다! ^^ 

댓글을 작성하려면 로그인해야 합니다.