HOWTO · Python

Python의 목록에 여러 요소 추가

값을 수동으로 추가하여 목록에 여러 요소를 추가하거나 append(), extend(), 연결 및 itertools 메소드를 사용할 수 있습니다.

이 페이지의 내용

기존 Python 리스트에 iterable의 값을 추가하려면 extend() 메서드를 사용하세요. 이 메서드는 해당 리스트를 제자리에서 변경합니다. append() 메서드는 호출할 때마다 객체 하나를 추가하며, +와 itertools.chain 뒤에 list()를 사용하면 새 리스트가 만들어집니다. 슬라이스 대입으로 원하는 위치에 값을 삽입할 수도 있습니다.

리스트를 변경할지, 새 값을 어디에 넣을지, 새 결과가 필요한지를 기준으로 방법을 선택하세요. 아래 예제에서 각 방법의 동작을 확인할 수 있습니다.

append()로 항목 하나 추가하기

append()는 인수를 리스트 끝에 객체 하나로 추가하는 리스트 메서드입니다. 인수 자체가 리스트여도 그 리스트는 중첩된 단일 요소로 추가됩니다. append()를 반복해서 호출하면 호출할 때마다 객체 하나가 추가됩니다.

다음 예제를 실행해 보세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

values = ["red", "blue"]
values.append("green")
print(values)

값을 각각 추가하려면 값마다 append()를 한 번씩 호출할 수 있습니다. iterable에 든 여러 값을 추가할 때는 보통 extend()를 사용하는 편이 더 간단합니다.

extend()로 여러 항목 추가하기

extend()는 iterable을 순회하며 내놓는 각 값을 기존 리스트에 덧붙입니다. 리스트 자체가 변경되고 메서드는 None을 반환하므로, 메서드의 반환값을 대입하지 말고 원래 리스트 변수를 계속 사용하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

colors = ["red", "blue"]
colors.extend(["green", "yellow"])
print(colors)

튜플이나 문자열 같은 다른 iterable에도 사용할 수 있습니다. 문자열은 한 번에 문자 하나씩 값을 내놓으므로, "hi"를 확장하면 "h"와 "i"가 각각 추가됩니다. iterable 자체를 객체 하나로 저장하려면 append()를 사용하세요.

슬라이스 대입으로 여러 항목 삽입하기

슬라이스 대입은 선택한 리스트 구간을 iterable의 값으로 바꿉니다. 빈 슬라이스는 기존 값을 선택하지 않으므로, 여기에 값을 대입하면 나머지 항목을 그대로 두고 새 값을 삽입합니다. 인덱스로 삽입 위치를 정할 수 있습니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

items = ["a", "d"]
items[1:1] = ["b", "c"]
print(items)

이 예제에서는 슬라이스의 시작과 끝이 모두 인덱스 1이므로 새 값 두 개가 원래 "d" 앞에 들어갑니다. 비어 있지 않은 슬라이스는 선택된 값을 대체하므로, 대체가 아니라 삽입이 목적이라면 슬라이스 경계를 확인하세요.

리스트를 +로 결합하기

+ 연산자는 리스트를 연결해 새 리스트를 반환합니다. 두 피연산자 중 어느 것도 변경하지 않으므로 원래 리스트를 그대로 유지하고 싶을 때 유용합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

first = [1, 2]
second = [3, 4]
combined = first + second
print(combined)

리스트를 연결하려면 두 피연산자가 모두 리스트여야 합니다. 기존 리스트 하나에 값을 추가하려는 경우에는 연결 결과를 만들어 대입하는 대신 extend()를 사용하세요.

itertools.chain로 iterable에서 리스트 만들기

itertools.chain은 입력 iterable의 값을 순서대로 내놓는 iterator를 만듭니다. 그 값들로 새 리스트를 만들려면 list()로 감싸세요. 입력이 이미 iterable이거나 여러 원본을 순서대로 순회하려는 경우에 유용하며, 원본은 변경하지 않습니다. 성능은 주변 작업과 데이터에 따라 달라지므로 다른 방법보다 항상 효율적이라고 할 수는 없습니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

from itertools import chain

numbers = [1, 2]
more_numbers = (3, 4)
combined = list(chain(numbers, more_numbers))
print(combined)

리스트를 만들지 않고 iterator를 루프에서 바로 순회할 수도 있습니다. 리스트 결과가 필요할 때만 리스트로 변환하세요.

상황에 맞는 방법 선택하기

  • 객체 하나를 추가하거나 각 값을 따로 처리할 때는 append()를 사용하세요.
  • iterable의 모든 값을 기존 리스트에 추가할 때는 extend()를 사용하세요.
  • iterable의 값을 특정 위치에 삽입하려면 슬라이스 대입을 사용하세요. 빈 슬라이스에 대입하면 기존 값을 바꾸지 않고 삽입할 수 있습니다.
  • 두 리스트를 결합한 새 리스트가 필요하고 입력 리스트를 그대로 유지하려면 +를 사용하세요.
  • 여러 iterable에서 나온 값으로 새 리스트를 만들려면 list(itertools.chain(...))를 사용하세요. iterator만으로 충분하다면 list()를 생략하세요.

이미 가지고 있는 리스트에 여러 값을 추가하는 일반적인 작업이라면 extend()부터 고려하세요. 특정 인덱스에 삽입하거나, 별도의 연결 결과를 만들거나, 여러 원본을 순회하는 iterator가 필요할 때는 다른 방법을 선택하세요.