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

Python append() vs extend(): 차이점과 사용법 완벽 정리

Python에서 append()extend()는 모두 리스트(list)에 새로운 요소를 추가할 때 사용하는 메서드입니다. 두 함수는 이름은 비슷하지만 동작 방식이 확연히 다르기 때문에, 각각의 특성을 정확히 이해하고 상황에 맞게 사용하는 것이 중요합니다.

1. append()란?

append()는 전달받은 값을 하나의 단일 요소로서 리스트 맨 끝에 추가합니다. 인자는 하나만 받을 수 있으며, 만약 리스트를 인자로 전달하면 그 리스트가 통째로 하나의 요소로 들어갑니다.

문법: list_name.append('value')
인자는 반드시 하나만 전달해야 합니다.

즉, 어떤 값이든 한 번 호출당 원본 리스트의 길이가 정확히 1씩 증가합니다.

예제

days = ['Mon', 'Tue', 'Wed']
print("기존 리스트:", days)

# 요소 하나 추가
days.append('Thu')
print("append로 요소 추가:", days)

# 리스트 자체를 하나의 요소로 추가
days.append(['Fri', 'Sat'])
print("append로 리스트 추가:", days)

실행 결과

기존 리스트: ['Mon', 'Tue', 'Wed']
append로 요소 추가: ['Mon', 'Tue', 'Wed', 'Thu']
append로 리스트 추가: ['Mon', 'Tue', 'Wed', 'Thu', ['Fri', 'Sat']]

위 결과를 보면 ['Fri', 'Sat']라는 리스트가 분리되지 않고 중첩 리스트(nested list) 형태로 그대로 삽입된 것을 확인할 수 있습니다.

2. extend()란?

extend()는 전달받은 반복 가능한(iterable) 객체의 각 요소를 개별 요소로 분해하여 리스트 끝에 하나씩 추가합니다. 따라서 리스트의 최종 길이는 추가된 요소의 개수만큼 늘어납니다.

문법: list_name.extend('value')
인자는 반드시 하나만 전달해야 합니다.

예제

days = ['Mon', 'Tue', 'Wed']
print("기존 리스트:", days)

# 문자열을 extend로 추가 (주의: 문자별로 분리됨)
days.extend("Thu")
print("extend로 문자열 추가:", days)

# 리스트를 extend로 추가
days.extend(['Fri', 'Sat'])
print("extend로 리스트 추가:", days)

실행 결과

기존 리스트: ['Mon', 'Tue', 'Wed']
extend로 문자열 추가: ['Mon', 'Tue', 'Wed', 'T', 'h', 'u']
extend로 리스트 추가: ['Mon', 'Tue', 'Wed', 'T', 'h', 'u', 'Fri', 'Sat']

여기서 주목할 점은 문자열 "Thu"extend()에 전달했을 때 발생하는 결과입니다. 문자열 역시 반복 가능한 객체이므로, 'T', 'h', 'u'라는 개별 문자들로 쪼개져 리스트에 추가됩니다. 의도치 않은 버그의 흔한 원인이므로 반드시 기억해 둘 필요가 있습니다.

3. 핵심 차이점 비교

구분append()extend()
추가 방식값을 하나의 단일 요소로 추가반복 가능한 객체의 각 요소를 개별적으로 추가
리스트 전달 시중첩 리스트 형태로 통째로 삽입내부 요소들이 풀려서(parsing) 각각 추가
길이 변화항상 +1추가된 요소 수만큼 증가
인자 조건어떤 타입이든 허용반복 가능한(iterable) 객체여야 함

4. 언제 무엇을 사용해야 할까?

  • 단일 값을 추가할 때: 숫자, 문자열 등 하나의 값이라면 append()를 사용하세요.
  • 여러 요소를 합칠 때: 다른 리스트의 요소들을 기존 리스트에 이어 붙이고 싶다면 extend() 또는 += 연산자가 적합합니다.
  • 중첩 구조가 필요할 때: 리스트 안에 리스트를 넣어 2차원 구조를 만들고 싶다면 append()를 사용하세요.

두 메서드의 차이를 명확히 구분해 두면, 데이터 구조를 설계할 때 예기치 못한 오류를 피하고 코드의 가독성과 안정성을 크게 높일 수 있습니다.