프로그래밍 언어/Python

[Python] Tuple (튜플)과 List(리스트)의 공통점/차이점

ShovelingLife 2023. 12. 20. 10:22

공통점

1. 길이를 갖는다

튜플(Tuple)과 리스트(List)는 길이가 있다. 따라서 len 함수를 사용할 수 있다.

a = [1,2,3] ## 리스트
b = (1,2,3) ## 튜플
 
print('a의 길이 :', len(a))
print('b의 길이 :', len(b))

2. 언패킹이 가능하다

언패킹(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)

3. 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의 등장 횟수

차이점

1. 선언 방식이 다르다

리스트는 각 괄호 ' [ ] ' 를 이용하고 두 개 이상의 원소를 갖는다면 콤마로 구분해주어야 한다. 하지만 튜플은 괄호 ' ( ) '를 이용한다. 만약 원소가 한 개인 경우에는 반드시 뒤에 콤마를 붙여주어야 한다.

a = [3] ## 리스트
b = (3,) ## 원소가 하나인 경우 튜플은 반드시 뒤에 콤마를 붙여야한다.
 
c = [3,4,5] ## 리스트
d = (3,4,5) ## 튜플
 
print(a)
print(b)
print(c)
print(d)

2. 리스트는 가변이지만 튜플은 불변이다

리스트는 append, insert 같은 함수가 있어서 리스트에 원소를 추가할 수 있으며 sort를 이용하여 내부적으로 정렬도 할 수 있다. 따라서 리스트는 변할 수 있는 가변성을 띄고 있다. 하지만 튜플은 불변이라 튜플을 바꾸는 함수가 없다.

 

아래 코드를 보면 리스트는 가변성을 갖기 때문에 인덱스를 통한 값의 변경이 가능하다. 하지만 튜플은 불변이라 변경이 안된다.

a = [1,2,3] ## 리스트 
a[0] = 4 ## 리스트 a의 첫 번째 원소를 4로 바꾼다.
print(a)
 
b = (1,2,3) ## 튜플
b[0] = 4 ## 튜플은 불변이라 바꿀 수 없다.
print(b)

3. 튜플이 더 적은 메모리를 차지한다

from sys import getsizeof
 
a = [1,2,3] ## 리스트
b = (1,2,3) ## 튜플
 
print(f'리스트 a의 용량 : {getsizeof(a)} 바이트')
print(f'튜플 b의 용량 : {getsizeof(b)} 바이트')

 

https://zephyrus1111.tistory.com/304