파이썬 리스트 append 함수와 extend 함수

파이썬 리스트 append와 extend: 무엇이고 언제 필요한가?

파이썬에서 여러 값을 저장하고 관리하려면 리스트가 자주 쓰입니다. 리스트에 값을 추가하는 대표적인 방법이 append()extend()인데, 두 메서드는 이름이 비슷해 초보자가 혼동하기 쉽습니다. 이 글에서는 각각 무엇을 하는지, 언제 어떤 상황에서 써야 하는지, 쓰임새와 차이를 실제 예제로 확실히 구분해 설명합니다.

이 글을 이해하려면 리스트 자료형과 기본 메서드 사용법을 알고 있으면 좋지만, 리스트 개념이 익숙하지 않아도 예시를 따라가며 배울 수 있습니다.

append와 extend의 공통점과 핵심 차이

  • 둘 다 리스트에 새로운 값을 추가하는 메서드입니다.
  • append(x)x 전체를 하나의 요소로 리스트 맨 뒤에 넣습니다.
  • extend(iterable)iterable(반복 가능한 값)의 각 요소를 하나씩 리스트 맨 뒤에 차례로 넣습니다.

즉, append는 리스트에 무언가를 통째로 추가하고, extend는 여러 값을 각각 풀어서 이어 붙입니다.

각 메서드의 가장 작은 실행 예제

append의 기본 사용 예

값 하나(숫자, 문자열, 리스트 등)를 통째로 리스트에 추가합니다.

fruits = ["apple", "banana"]
fruits.append("cherry")
print(fruits)

실행 결과

['apple', 'banana', 'cherry']

extend의 기본 사용 예

여러 값을 담은 리스트를 각각 풀어서 추가합니다.

numbers = [1, 2, 3]
numbers.extend([4, 5])
print(numbers)

실행 결과

[1, 2, 3, 4, 5]

동일한 시작 데이터로 직접 비교하기

같은 리스트에 [4, 5]를 append와 extend로 각각 추가하면 결과가 어떻게 달라질까요?

append로 [4, 5] 추가

a = [1, 2, 3]
a.append([4, 5])
print(a)

실행 결과

[1, 2, 3, [4, 5]]

extend로 [4, 5] 추가

b = [1, 2, 3]
b.extend([4, 5])
print(b)

실행 결과

[1, 2, 3, 4, 5]

append는 [4, 5] 전체를 한 칸에, extend는 4와 5를 각각 한 칸씩 추가합니다.

실행 결과와 값이 달라지는 이유

방법코드리스트 결과
appenda.append([4, 5])[1, 2, 3, [4, 5]]
extendb.extend([4, 5])[1, 2, 3, 4, 5]

append는 인자로 받은 값을 그대로 넣어서, 리스트 안에 또 다른 리스트가 생깁니다.
extend는 인자로 받은 리스트의 각 요소를 풀어서 기존 리스트에 넣습니다.

많이 하는 실수와 수정 방법

여러 값을 한꺼번에 추가하고 싶을 때 append를 써서 원하는 결과가 안 나올 때가 많습니다.

잘못된 예:

nums = [10, 20]
nums.append(30, 40)

위 코드는 TypeError가 발생합니다. append는 하나의 값만 받을 수 있기 때문입니다.

수정된 정상 코드:

nums = [10, 20]
nums.extend([30, 40])
print(nums)

실행 결과

[10, 20, 30, 40]

또 한 가지 혼동 예시:

잘못된 예:

lst = [1, 2]
lst.append([3, 4])
print(lst)

실행 결과

[1, 2, [3, 4]]

이 경우 오류는 아니지만, 원하던 [1, 2, 3, 4]가 아니라 [1, 2, [3, 4]]가 됩니다. 요소가 리스트로 들어간 것이죠.

수정하려면 extend를 사용해야 합니다.

lst = [1, 2]
lst.extend([3, 4])
print(lst)

실행 결과

[1, 2, 3, 4]

경계값과 예상 밖 동작 확인: 문자열을 추가할 때

extend에 문자열을 넣으면 각 글자가 따로따로 추가됩니다. 초보자는 이 점을 자주 실수합니다.

letters = ["a", "b"]
letters.extend("cd")
print(letters)

실행 결과

['a', 'b', 'c', 'd']

위 코드는 ["a", "b", "c", "d"]가 됩니다. "cd" 전체가 아니라, 한 글자씩 풀어서 추가된 결과죠.

만약 "cd"라는 문자열을 통째로 하나로 넣고 싶다면 append를 사용해야 합니다.

letters = ["a", "b"]
letters.append("cd")
print(letters)

실행 결과

['a', 'b', 'cd']

현실적인 사용 사례: 여러 값을 반복해서 추가할 때

예를 들어, 센서에서 여러 개의 측정값이 한 번에 리스트로 들어오면, 기존 데이터 리스트에 각 측정값을 하나씩 추가하려면 extend를 써야 합니다.

measurements = [100, 200]
new_data = [300, 400, 500]
measurements.extend(new_data)
print(measurements)

실행 결과

[100, 200, 300, 400, 500]

만약, 한 번의 측정값이 리스트 형태로 들어오지만, 그걸 묶어서 각각 보관해야 할 때는 append를 사용하면 됩니다.

records = []
measure = [1.2, 3.4]
records.append(measure)
print(records)

실행 결과

[[1.2, 3.4]]

선택 기준: 언제 append, 언제 extend를 써야 할까?

  • 값을 하나만 추가할 때는 append(X)를 사용합니다. X는 어떤 자료형도 가능합니다.
  • 여러 값을 각각 추가할 때는 extend(리스트나 반복 가능한 값)을 사용합니다.
  • 문자열처럼 각 글자가 분리될 수 있는 값을 extend로 넣을 때는 의도와 다른 결과가 될 수 있으니 주의하세요.

핵심 정리

  • append는 한 번에 하나의 값을 통째로 추가합니다.
  • extend는 여러 값을 하나씩 풀어서 추가합니다.
  • 여러 값을 한꺼번에 리스트에 넣으려면 extend, 값 자체를 묶어 추가하려면 append를 씁니다.
  • 문자열이나 리스트 등 반복 가능한 자료형을 다룰 때 결과를 꼭 확인하세요.

연습 문제

  1. 리스트 nums = [5, 6]에 7과 8을 각각 추가해서 [5, 6, 7, 8]로 만드는 코드를 작성하세요.
  2. 리스트 items = [][1, 2] 전체를 하나의 요소로 추가하려면 어떤 메서드를 써야 할까요? 코드를 완성해 보세요.
  3. 문자열 "xy"를 리스트 letters = ["a"]에 한 번에 한 글자씩 추가하는 코드와, "xy" 전체를 하나의 요소로 추가하는 코드를 각각 작성해 보세요.