Programming Languages/Python

[Python] 리스트 append 와 extend의 차이

쉬지마 이굥진 2024. 5. 14. 10:52

다들 알다시피 append와 extend는 리스트에 요소를 추가하는 메서드다. 알고리즘 문제를 풀다가 extend를 썼어야 할 때에 append를 써서 틀려 이번 기회에 뭐가 다른지 차이점을 확실히 짚고 넘어가고 싶어 포스팅한다.

 

✏️append(x)

append 메서드는 리스트 끝에 요소를 그대로 추가한다. 추가되는 요소는 리스트의 마지막에 추가된다. 

lst = [1, 2, 3]
lst.append(4)
print(lst)  # 출력: [1, 2, 3, 4]

 

✏️extend(iterable)

반면 extend 메서드는 리스트 끝에 다른 리스트의 모든 요소를 추가한다. 추가되는 요소들은 리스트의 마지막에 순서대로 추가된다. 여기서 iterable은 리스트, 튜플, 문자열 등과 같은 반복 가능한 객체이다.

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.extend(lst2)
print(lst1)  # 출력: [1, 2, 3, 4, 5, 6]

 

✏️append와 extend의 차이

위의 예시로 append와 extend의 차이를 비교해보면, 

  • append 했을 때
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.append(lst2)
print(lst1) # 출력: [1, 2, 3, [4, 5, 6]]
  • extend 했을 때
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.extend(lst2)
print(lst1)  # 출력: [1, 2, 3, 4, 5, 6]

 

즉, append는 x 그 자체를 원소로 넣고, extend는 iterable의 각 요소들을 넣는다고 할 수 있다.

 

리스트 안에 리스트가 있을 때

x = ['jin', 'jun', 'yeon']
y = [['yeong', 'jong']]
x.append(y)
print(x)  # 출력: ['jin', 'jun', 'yeon', [['yeong', 'jong']]]
x = ['jin', 'jun', 'yeon']
y = [['yeong', 'jong']]
x.extend(y)
print(x)  # 출력: ['jin', 'jun', 'yeon', ['yeong', 'jong']]

append는 x 그 자체를 원소로 넣고, extend는 가장 바깥 쪽 iterable을 넣는다.

 

y가 문자열일 때

x = ['jin', 'jun', 'yeon']
y = 'jong'
x.append(y)
print(x)  # 출력: ['jin', 'jun', 'yeon', 'jong']
x = ['jin', 'jun', 'yeon']
y = 'jong'
x.extend(y)
print(x)  # 출력: ['jin', 'jun', 'yeon', 'j', 'o', 'n', 'g']

append는 x 그 자체를 원소로 넣고, extend는 문자열의 각 알파벳을 넣는다.


✏️정리

list.append(x) 는 리스트 끝에 x 1개를 그대로 넣는다.

list.extend(iterable)는 리스트 끝에 가장 바깥쪽 iterable의 모든 항목을 넣는다.