본문 바로가기
Computer Science/Python

python list append() vs extend() 차이

by sohyunwriter 2021. 1. 31.

*python list append() vs extend() 차이

 

python list에 새로운 원소를 추가하는 방법은 

append(x)와 extend(iterable)이 있다.

 

각각의 차이에 대해 묻는 질문을 본 적이 있어 정리한다.

 

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

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

 

 

가령 [a, b, c]에 [d, e]를 추가한다고 할 때, 

append를 쓰면 [a, b, c, [d, e]] 이런 식으로 들어간다.

그런데 [a, b, c, d, e]로 넣고 싶다...

그러면 extend를 쓰면 된다!

 

이렇게 [ ]를 벗기고 넣어야 할 때 쓰는 게 extend다.

생각보다 작업할 때 []를 벗겨야 하는 경우도 있어 종종 쓰는 것 같다.

[] 등 iterable 객체가 여러 개 있으면 가장 바깥쪽 iterable 기준으로 작동한다.

 

 

그러면 아래 문제를 풀어보자.

 

Q1. 1차원 배열 추가

 

1.1) 

x = ['x1', 'x2', 'x3']
y = ['y1', 'y2']
x.append(y)
print("x: ", x)

x: ['x1', 'x2', 'x3', ['y1', 'y2']]

 

1.2) 

x = ['x1', 'x2', 'x3']
y = ['y1', 'y2']
x.extend(y)
print("x: ", x)

x: ['x1', 'x2', 'x3', 'y1', 'y2']

 

 

Q2. 2차원 배열 추가

 

2.1)

x = ['x1', 'x2', 'x3']
y = [['y1', 'y2']]
x.append(y)
print('x:', x)

x: ['x1', 'x2', 'x3', [['y1', 'y2']]]

 

2.2)

x = ['x1', 'x2', 'x3']
y = [['y1', 'y2']] 
x.extend(y)  # 가장 바깥쪽 [] 기준으로 모든 항목 넣기
print('x:', x)

x: ['x1', 'x2', 'x3', ['y1', 'y2']]

 

 

Q3. 문자열 추가

 

3.1)

x = ['x1', 'x2', 'x3']
y = 'y1'
x.append(y)
print('x:', x)

x: ['x1', 'x2', 'x3', 'y1']

 

3.2)

x = ['x1', 'x2', 'x3']
y = 'y1'
x.extend(y)  # 가장 바깥쪽 '' 기준으로 모든 항목 넣기
print('x:', x)

x: ['x1', 'x2', 'x3', 'y', '1']

 

 

 

전체 코드 : Github link

 


-관련 질문

 

Q. Python에서 list append()와 extend()의 차이

 

A.

둘다 list에 새로운 원소를 추가하는 방법이지만, 

append는 리스트 끝에 해당 원소 1개를 그대로 추가하고, 

extend는 리스트 끝에 가장 바깥쪽 iterable의 모든 원소를 추가합니다.

 

 

 

-참고문헌