♧ Computer science

[Python] append()와 extend(), 리스트에 원소 추가

Grit_0913 2024. 9. 25. 14:59

[Python] append()와 extend()

하단의 목차를 클릭하여 이동할 수 있습니다 :)

1. append()
2. extend()
3. 비교 표
4. Reference
  • append()와 extend() 모두 파이썬 리스트에 원소를 추가할 때 사용한다.

1. append()

  • 사용하는 방법은 list.append(item)으로 사용한다.
    • item : 추가될 원소
  • 주어진 item을 하나의 원소로 리스트에 추가한다. (a = [1, 2, 3]).
    • a.append(1) → a = [1, 2, 3, 1]
    • a.append([1, 2, 3]) → a = [1, 2, 3, [1, 2, 3]]
    • a.append('string') → a = [1, 2, 3, 'string']
    • a.append(['a', 'b', 'c']) → a = [1, 2, 3, ['a', 'b', 'c']]
  • 새로운 배열을 생성하지 않고 기존의 배열에 추가한다.
  • 시간 복잡도는 $O(1)$이다.

2. extend()

  • 사용하는 방법은 list.extend(iterable) 이다.
    • iterable이란 반복할 수 있는 객체를 의미한다. (e.g. lsit, set, tuple, etc.).
  • iterable이 추가 될 때 extend는 iterable의 원소를 개별적으로 하나의 원소로서 리스트에 추가한다. (a = [1, 2, 3]).
    • a.extend([1, 2, 3]) → a = [1, 2, 3, 1, 2, 3]
    • a.extend('string') → a = [1, 2, 3, 's', 't', 'r', 'i', 'n', 'g']
    • a.extend([1] * 5) → [1] 다섯 개로 된리 스트를 생성한 뒤, 해당 리스트를 추가한다. 즉, [1, 1, 1, 1, 1]을 생성하고 추가하기에 a = [1, 2, 3, 1, 1, 1, 1, 1]이 된다.
  • 새로운 iterable을 받아서 추가한다. 따라서 iterable의 크기에 영향을 받는다.
  • extend()의 빅 오는 iterable의 영향을 받기에 $O(k)$가 된다. (k = iterable의 요소의 수).

3. 비교 표

[Fiture 1] 사이트 표 번역

 

언제 extend()를 사용할까?

 

표를 보면 효율 측면에서 append()가 항상 효율적이다. 그럼에도 extend()를 사용하는 경우는 iterable의 값을 개별적으로 입력해야 할 경우이다. 예를 들어 ["string', 'car', 'cat']을 모두 글자 단위로 입력하고 싶은 경우 extend()를 사용한다. 단, iterable의 길이가 길어질수록 시간 복잡도가 늘어난다는 단점이 있다.

 

p.s. list.extend([2] * 10)과 같이 새로운 리스트를 생성하는 경우 메모리 또한 사용한다.


4. Reference

https://www.geeksforgeeks.org/append-extend-python/

 

append() and extend() in Python - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org