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

파이썬 리스트에 요소 추가하는 방법: append()와 extend() 완벽 정리

파이썬에서 리스트(list)를 다루다 보면 기존 리스트의 끝에 새로운 요소를 추가해야 하는 경우가 자주 발생합니다. 이때 활용할 수 있는 대표적인 메서드가 바로 append()extend()입니다. 이 두 메서드는 비슷해 보이지만 동작 방식과 결과가 확연히 다르기 때문에, 각각의 특성을 정확히 이해하고 상황에 맞게 사용하는 것이 중요합니다.

append() 메서드로 요소 추가하기

append()는 전달받은 하나의 항목(item)을 리스트의 맨 끝에 그대로 추가하는 메서드입니다. 호출 후 리스트의 길이는 정확히 1만큼 증가합니다.

문법

list.append(item)

매개변수 item은 리스트 끝에 추가할 값으로, 숫자, 문자열, 리스트, 딕셔너리 등 어떤 자료형이든 가능합니다.

리스트 끝에 단일 요소 추가

append()를 사용하면 새로운 요소가 리스트 끝에 추가되고, 리스트의 크기도 함께 늘어납니다.

예제

colors=["red","blue","black"]
print("List",colors)
print("Size of list", len(colors))
colors.append("white")
print("Updated list",colors)
print("Size of updated list",len(colors))

실행 결과

List ['red', 'blue', 'black']
Size of list 3
Updated list ['red', 'blue', 'black', 'white']
Size of updated list 4

리스트 끝에 다른 리스트 추가

append()는 다른 리스트를 통째로 하나의 요소로 넣을 수도 있습니다. 이 경우 중첩 리스트(nested list)가 만들어진다는 점에 유의하세요.

예제

colors=["red","blue","black"]
print("List",colors)
fruits=["apple","grapes","mango"]
colors.append(fruits)
print("Updated list",colors)

실행 결과

List ['red', 'blue', 'black']
Updated list ['red', 'blue', 'black', ['apple', 'grapes', 'mango']]

출력 결과를 보면 fruits 리스트가 개별 요소로 풀려 들어간 것이 아니라, 하나의 리스트 객체로 통째로 추가된 것을 확인할 수 있습니다.

extend() 메서드로 요소 추가하기

extend() 역시 리스트 끝에 요소를 추가하지만, append()와는 작동 방식이 다릅니다. extend()는 전달받은 반복 가능한(iterable) 객체를 순회하면서 각 요소를 하나씩 리스트에 추가합니다. 따라서 리스트 길이는 인자의 길이만큼 증가합니다.

문법

list.extend(iterable)

iterable에는 문자열이나 다른 리스트 등 반복 가능한 객체를 지정할 수 있습니다.

문자열로 리스트 확장하기

문자열도 반복 가능한 객체입니다. 따라서 문자열로 리스트를 확장하면 해당 문자열의 모든 문자가 개별 요소로 리스트 끝에 추가됩니다.

예제

colors=["red","blue","black"]
print("List",colors)
print("Size of list", len(colors))
colors.extend("white")
print("Updated list",colors)
print("Size of updated list",len(colors))

실행 결과

List ['red', 'blue', 'black']
Size of list 3
Updated list ['red', 'blue', 'black', 'w', 'h', 'i', 't', 'e']
Size of updated list 8

'white'라는 단어가 통째로 들어가지 않고 w, h, i, t, e라는 문자 하나하나로 분리되어 추가된 점에 주목하세요.

다른 리스트로 리스트 확장하기

리스트 역시 반복 가능한 객체입니다. 다른 리스트로 확장하면 인자로 전달된 리스트의 모든 요소가 기존 리스트 끝에 개별적으로 추가됩니다.

예제

colors=["red","blue","black"]
print("List",colors)
print("Size of list", len(colors))
colors2=["white","pink","orange"]
colors.extend(colors2)
print("Updated list",colors)
print("Size of updated list",len(colors))

실행 결과

List ['red', 'blue', 'black']
Size of list 3
Updated list ['red', 'blue', 'black', 'white', 'pink', 'orange']
Size of updated list 6

append() 때와 달리 colors2의 요소들이 중첩 없이 평평하게(flatten) 병합된 것을 볼 수 있습니다.

append() vs extend(): 무엇이 다를까?

  • 두 메서드는 이름은 비슷하지만 기능이 서로 다릅니다.

  • append()는 인자를 단일 요소 하나로 취급하여 그대로 추가하는 반면, extend()는 인자를 순회하며 각 요소를 개별적으로 리스트 끝에 추가합니다.

  • append()는 리스트 길이를 1만큼 늘리고, extend()는 인자의 길이(k)만큼 늘립니다.

  • 시간 복잡도 측면에서 append()는 O(1)의 상수 시간을 가지며, extend()는 인자의 길이 k에 비례하는 O(k)의 시간 복잡도를 가집니다.

정리하면, 하나의 값을 통째로(중첩 리스트 포함) 추가하고 싶다면 append(), 여러 요소를 기존 리스트에 펼쳐서 병합하고 싶다면 extend()를 사용하는 것이 올바른 선택입니다.