파이썬 리스트에 대해서..

  • 단델리언
    단델리언

    오늘 문제를 풀다가 도저히 이해가 안가는게 있어서 질문드립니다.

    문제에 대한 질문이라기 보다는 파이썬 리스트에 대한 것입니다.

    JUMPGAME 문제를 푸는데 이상하게 안 풀리는겁니다.

    그렇게 어려운 문제도 아니고 틀린게 없어보이는데

    끝내 찾아내긴 했는데 이해가 안갑니다.

    cache 를 만들어서 -1로 초기화를 하는데

    tmp = [-1 for i in range(5)]
    cache = [tmp for i in range(5)]

    이렇게 cache 를 만들어서 출력해보면 잘 만들어졌거든요...

    근데 계속 안되서 실험을 해보다가

    cachel = [[-1 for i in range(5)] for x in range(5)]

    이렇게 cachel 로 만들면 되더라구요

    그래서 다른 스크립트 파일에다가

    두 개를 다 만들어서

    cache[1][1] = 1

    cachel[1][1] = 1 해보면

    위의 cache는 list 안의 모든 항목이 1로 바뀌더라구여

    밑의 cachel 은 정상적으로 원하는대로 바뀌구요...

    왜 그런거죠?

    정말 처음봐서 그렇습니다..

    제가 무지한건가요 ㅠㅠ


    7년 전
5개의 댓글이 있습니다.
  • 단델리언
    단델리언

    아 파이썬 버전은 3.4 입니다!


    7년 전 link
  • Corea
    Corea

    cache는 tmp 객체를 다섯개 들고 있는 리스트가 됩니다. tmp는 결국 하나의 리스트를 가리키고 있게 되구요.


    7년 전 link
  • 단델리언
    단델리언

    그럼 cache[1][1] = 1 이라는게 결국 cache[1] = 1 이랑 같은게 되는건가요?


    7년 전 link
  • Corea
    Corea

    cache[1][1] = 1이라는게 tmp[1] = 1과 같게되죠 :)


    7년 전 link
  • 단델리언
    단델리언

    아... tmp 라는 객체...
    이제 이해했습니다 감사합니다!
    열심히 공부해야겠네요..


    7년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.