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()를 사용하세요.
두 메서드의 차이를 명확히 구분해 두면, 데이터 구조를 설계할 때 예기치 못한 오류를 피하고 코드의 가독성과 안정성을 크게 높일 수 있습니다.