본문 바로가기
프로그래밍/Python

파이썬(Python) 튜플(Tuple)과 리스트(List)의 공통점과 차이점

by 부자 꽁냥이 2022. 9. 19.

파이썬(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)} 바이트')

 


댓글


맨 위로