파이썬(Python) 코딩을 하는 사람이라면 반드시 알고 있어야 하는 객체로 튜플(Tuple)과 리스트(List)가 있다.
하지만 필자는 이들의 공통점과 차이점을 잘 알지 못했는데 이번에 알게된 내용을 포스팅하고자 한다.
튜플(Tuple)과 리스트(List)의 공통점과 차이점
1) 공통점
a. 길이를 갖는다.
튜플(Tuple)과 리스트(List)는 길이가 있다. 따라서 len 함수를 사용할 수 있다.
a = [1,2,3] ## 리스트
b = (1,2,3) ## 튜플
print('a의 길이 :', len(a))
print('b의 길이 :', len(b))
b. 언패킹(Unpacking)이 가능하다.
언패킹(Unpacking)이란 여러 변수를 한 번에 할당하는 것을 말한다. 튜플(Tuple)과 리스트(List)는 이러한 언패킹이 가능하다.
a = [1,2,3] ## 리스트
b = (7,8,9) ## 튜플
## 언패킹(Unpacking)
x1, x2, x3 = a
y1, y2, y3 = b
print(x1, x2, x3)
print(y1, y2, y3)
c. index, count 함수를 사용할 수 있다.
튜플(Tuple)과 리스트(List)는 객체 내부에 index와 count를 사용할 수 있다.
a = [1,1,3] ## 리스트
b = (7,9,9,9) ## 튜플
## 언패킹(Unpacking)
print(a.index(3)) ## 리스트 a에서 3의 인덱스?
print(a.count(1)) ## 리스트 a에서 1의 등장 횟수
print(b.index(7)) ## 튜플 b에서 7의 인덱스?
print(b.count(9)) ## 튜플 b에서 9의 등장 횟수
2) 차이점
a. 선언 방식이 다르다.
리스트는 각 괄호 ' [ ] ' 를 이용하고 두 개 이상의 원소를 갖는다면 콤마로 구분해주어야 한다. 하지만 튜플은 괄호 ' ( ) '를 이용한다. 만약 원소가 한 개인 경우에는 반드시 뒤에 콤마를 붙여주어야 한다.
a = [3] ## 리스트
b = (3,) ## 원소가 하나인 경우 튜플은 반드시 뒤에 콤마를 붙여야한다.
c = [3,4,5] ## 리스트
d = (3,4,5) ## 튜플
print(a)
print(b)
print(c)
print(d)
b. 리스트는 가변이지만 튜플은 불변이다.
리스트는 append, insert 같은 함수가 있어서 리스트에 원소를 추가할 수 있으며 sort를 이용하여 내부적으로 정렬도 할 수 있다. 따라서 리스트는 변할 수 있는 가변성을 띄고 있다. 하지만 튜플은 불변이라 튜플을 바꾸는 함수가 없다.
아래 코드를 보면 리스트는 가변성을 갖기 때문에 인덱스를 통한 값의 변경이 가능하다. 하지만 튜플은 불변이라 변경이 안된다.
a = [1,2,3] ## 리스트
a[0] = 4 ## 리스트 a의 첫 번째 원소를 4로 바꾼다.
print(a)
b = (1,2,3) ## 튜플
b[0] = 4 ## 튜플은 불변이라 바꿀 수 없다.
print(b)
c. 튜플이 더 적은 메모리를 차지한다.
튜플은 리스트보다 더 적은 메모리를 찾지한다.
from sys import getsizeof
a = [1,2,3] ## 리스트
b = (1,2,3) ## 튜플
print(f'리스트 a의 용량 : {getsizeof(a)} 바이트')
print(f'튜플 b의 용량 : {getsizeof(b)} 바이트')
'프로그래밍 > Python' 카테고리의 다른 글
파이썬(Python) 셋(Set)에 대하여 알아보기 (33) | 2022.09.22 |
---|---|
파이썬(Python) tqdm 사용법 알아보기 (5) | 2022.09.21 |
파이썬(Python) 데코레이터(Decorator)에 대해서 알아보자 (feat. @) (0) | 2022.09.19 |
파이썬(Python) 리스트(List) 정렬하기 (feat. sort, sorted) (0) | 2022.09.17 |
파이썬(Python) 리스트(List) 속에 원소 존재 여부, 원소 위치, 등장 횟수 알아보기 (feat, in, index, count) (36) | 2022.09.17 |
댓글