강의로 돌아가기
군대개미

급해요 ㅠㅠ

def solution(board):
    a = []
    b = []
    c = []
    for i in range(0,len(board)):
        c += b
        b.clear()
        for j,k in enumerate(board[i]):
            if k != 0:
                b += [j]
            elif True:
                pass
    c += b
    print(c)

이경우에는 정상적으로 [1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 2] 이렇게 출력이 되는데

def solution(board):
    a = []
    b = []
    c = []
    for i in range(0,len(board)):
        c += [b]
        b.clear()
        for j,k in enumerate(board[i]):
            if k != 0:
                b += [j]
            elif True:
                pass
    c += [b]
    print(c)

이경우에는 출력값이 [[2], [2], [2], [2], [2]] 이렇게 나와버리네요 왜이럴까요?

1 개의 답변
Demi

c += [b] 부분에서 얕은 복사가 일어나고 있습니다. 얕은 복사/깊은 복사 개념을 배우셔야할 것 같네요.

hashcode - 파이썬 리스트를 복사하려면 어떻게 해야하나요? 를 참고해주세요.

  • 군대개미
    오오 감사합니다. 군대개미 2019.01.24 20:55
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.