강의로 돌아가기
김형훈

문제에서 궁금한게 생겼습니다.

def solution(mylist):
    answer = [[]]
    for i in range(len(mylist)):
        for j in range(len(mylist)):
            answer[i][j] = mylist[j][i]
    return answer

mylist = [[1,2,3],[4,5,6],[7,8,9]]

print(solution(mylist))

이렇게 코드로 작성했더니 IndexError: list assignment index out of range 에러가 발생해서

def solution(mylist):
    answer = mylist
    for i in range(len(mylist)):
        for j in range(len(mylist)):
            answer[i][j] = mylist[j][i]
    return answer

mylist = [[1,2,3],[4,5,6],[7,8,9]]

print(solution(mylist))

이렇게 코드를 작성 했더니 answer의 값이 바뀌면서 mylist값도 같이 바뀌던데 이유가 무엇인지 잘 모르겠습니다.

1 개의 답변
Demi

안녕하세요. 이를 알려면 shallow copy와 deep copy 의 개념을 알아야합니다.
이에 대해서는 관련 블로그 글을 참고해보심이 어떤가 싶습니다.

  • 김형훈
    해결했습니다! 감사합니다! 김형훈 2018.09.28 11:01
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.