Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 리스트에서 append와 + 연산자의 차이점 완벽 정리

Python에서 두 개의 리스트를 다룰 때 + 연산자와 append(또는 extend) 메서드는 비슷해 보이지만 동작 방식이 완전히 다릅니다. 이 차이를 정확히 이해하는 것은 의도치 않은 버그를 피하는 데 매우 중요합니다.

1. 핵심 차이점

+ 연산자는 두 리스트를 결합할 때 새로운 리스트 객체를 생성합니다. 따라서 원본 리스트는 전혀 수정되지 않습니다.

반면 append, extend 같은 메서드는 리스트를 제자리(in-place)에서 수정합니다. 즉, 원본 객체 자체가 변경됩니다.

또 한 가지 중요한 차이는, append는 인자로 받은 리스트를 하나의 객체(중첩 리스트)로 그대로 삽입하는 반면, + 연산자는 두 리스트의 요소들을 단순히 연결(concatenate)한다는 점입니다.

2. + 연산자 사용 예제

list1 = [1, 2, 3]
list2 = ['a', 'b']
list3 = list1 + list2
print(list3)

출력 결과

[1, 2, 3, 'a', 'b']

+ 연산자는 두 리스트의 모든 요소를 이어 붙인 새로운 평탄한(flattened) 리스트를 반환합니다. 이때 list1list2는 변경되지 않고, 결과는 새 변수 list3에 저장됩니다.

3. append 메서드 사용 예제

list1 = [1, 2, 3]
list2 = ['a', 'b']
list1.append(list2)
print(list1)

출력 결과

[1, 2, 3, ['a', 'b']]

append를 사용하면 list2 전체가 하나의 요소(중첩 리스트)list1 끝에 추가됩니다. 결과적으로 리스트 안에 리스트가 들어간 형태가 되며, 원본 list1이 직접 수정됩니다.

4. 정리 및 추가 팁

  • +: 새 리스트를 생성하며, 요소들이 평평하게 연결됨 (원본 불변)
  • append(x): x를 단일 객체로 리스트 끝에 추가 (원본 수정, 중첩 발생)
  • extend(iterable): iterable의 각 요소를 개별적으로 리스트 끝에 추가 (원본 수정)

만약 append처럼 원본을 수정하면서도 요소들을 연결하고 싶다면 list1.extend(list2)를 사용하세요. 이 경우 출력은 [1, 2, 3, 'a', 'b']가 되어 + 연산자와 동일한 구조의 리스트를 얻을 수 있습니다.