*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의 모든 원소를 추가합니다.
-참고문헌
'Computer Science > Python' 카테고리의 다른 글
Python 딕셔너리 정렬 (Key, Value 기준 sort) (1) | 2022.04.09 |
---|---|
[Python] list 복사 ([:], copy(), deepcopy()) (0) | 2021.02.11 |
[Python] is 와 == 의 차이 (0) | 2021.01.26 |
[파이썬] 클래스 변수 vs 인스턴스 변수 차이 (0) | 2021.01.12 |