about front-end
[자료구조] Tuple
더 멋진 세상을 꿈꾸는 개발자
2020. 7. 6. 14:53
1. 정의 - Tuple
Tuple 이란?
- List와 마찬가지로 데이터를 순차적으로 저장할 수 있는 순열 자료구조이다.
- 하지만 list와 다르게 한 번 정의되고 나면 수정할 수 없다.(immutable)
- 2-3개 정도의 적은 수의 소규모 데이터를 저장할 때 많이 사용한다.
- 함수에서 리턴 값을 한 개 이상 리턴하고 싶을 때 자주 쓰인다.
>>> my_tuple = (1,"2",3.0)
>>> my_tuple
(1, '2', 3.0)
>>> for i in my_tuple:
... print(i)
...
1
2
3.0
>>> my_tuple[0]
1
>>> my_tuple[1]
'2'
>>> my_tuple[2]
3.0
>>> my_tuple[0] = 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
👉🏻Tuple Is Not For Every Language! : Python 은 tuple이 있고 JavaScript는 없다. 그렇다고 Python > JavaScript 는 아니다!
다만 JavaScript에서는 tuple을 굳이 따로 안만든것 뿐이다. Tuple은 list와 너무 비슷하기 때문에 굳이 제공하지 않는 언어도 많다. JavaScript에서는 그냥 array를 사용해도 상관없다.
2. Tuple의 장점
- Tuple은 간단한 값을 빨리 표현하고 싶을 때 많이 사용한다.
- 예를 들면 함수에서 리턴 값을 한 개 이상 리턴하고 싶을 경우 (ex. 지도 좌표)
-
Tuple을 사용하는 경우와 class/object 를 사용하는 경우를 비교해보겠다.
-
// Tuple을 사용하는 경우
[(1,2), (2,4)] // Array(List) 안의 Tuple
// Tuple을 안 쓰는 경우에는 class를 생성해야함
class cord:
def __init__(self, x, y):
self.x = x
self.y = y
3. Tuple의 단점
- Tuple의 단점은 데이터가 무슨 의미인지 명확하지 않다는 것이다.
- 데이터의 의미를 문맥을 보고 가정해야 합니다.
- 예를 들면 객체의 경우 key-value 쌍으로 이루어진 데이터이기 때문에 무슨 데이터인지 파악이 쉽지만, Tuple의 경우 괄호 안에 데이터만 담겨있기 때문에 문맥에 맞게 의미를 추측해야 합니다.
- 그렇기 때문에 Tuple은 소규모 데이터를 다루기에 적합합니다.
- cf) 이러한 단점을 극복하기 위해 Named Tuple 이란 것도 존재한다.(Python)
4. 언제 사용하면 좋을까?
- Array(List)를 쓰기에는 간단한 데이터들을 표현할 때 사용한다.
-
Tuple이 Array(List) 보다 더 가볍고 메모리더 적게 먹는다.
-
예를 들어, 좌표 데이터 :
coordinations = [ (1, 2), (3, 4), (5, 6) ]
-