파이썬 간단한 코드 질문

조회수 392회

안녕하세요, 간단한 코드인데 이해가 잘 안 되어서 질문드립니다.

case1=['a','b','c']
case2=['d','e','a']
result=[]
subresult=[]

for j in case2:
    for i in case1:
        subresult.append(i+j)
    result.append(subresult)

여기서 result를 출력하면

[['ad', 'bd', 'cd'], ['ad', 'bd', 'cd', 'ae', 'be', 'ce'], ['ad', 'bd', 'cd', 'ae', 'be', 'ce', 'aa', 'ba', 'ca']]

위의 결과가 나와야 할 것 같은데, 아래와 같은 결과가 나옵니다.

[['ad', 'bd', 'cd', 'ae', 'be', 'ce', 'aa', 'ba', 'ca'], ['ad', 'bd', 'cd', 'ae', 'be', 'ce', 'aa', 'ba', 'ca'], ['ad', 'bd', 'cd', 'ae', 'be', 'ce', 'aa', 'ba', 'ca']] 

왜 이렇게 나오는지 잘 이해가 안 되는데, 도움 주실 분이 계실까요~~..

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    result에는 subresult가 세 번 들어가니까요 subresult가 이미 result에 들어간 후라도 subresult가 변경되면 (같은 인스턴스니까) 같이 변경되는 겁니다

    • 아하 'subresult가 이미 result에 들어간 후라도 subresult가 변경되면 (같은 인스턴스니까) 같이 변경되는 겁니다' => 말씀해주신 이 부분을 제가 몰랐었나봅니다. 감사합니다 !! 남경빈 2023.3.22 08:57

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)