본문 바로가기
Python/Python 초급

Python 파이썬 Tuple, tuple(), 튜플 데이터 타입

by 베타코드 2021. 11. 20.
반응형

안녕하세요 독학코딩입니다. 오늘은 파이썬의 튜플에 대해서 배워보겠습니다. 튜플은 immutable, 불변 즉, 데이터 자체를 완전하게 유지해야 될 때 사용하는 테이터 타입니다. 원소의 배열로 이루어졌다는 점에서 리스트와 매우 흡사하지만 immutable이기 때문에 원소의 순서도 원소 그 자체도 수정이 불가능합니다.

Nonetype = 타입이 없는 자료입니다.
bool = 참, 거짓을 의미합니다. ex) true, false
int = 숫자형을 의미합니다. ex) 1, 2, 3
float = 소수점이 있는 숫자를 의미합니다. ex) 2.334, 5.125
str = 텍스트를 의미합니다. ex) "안녕", "사과"
list = 리스트라고 합니다. []로 표현됩니다. 
	ex) ["안녕", "사과"], [1, 2, 3, 4], [2.33, 4.21, 5.32]
tuple = 튜플이라고 합니다. ()로 표현됩니다. 한번 구성하면 구성원을 변경할 수 없습니다. 
	ex) ("안녕", "사과"), (1, 2, 3, 4), (2.33, 4.21, 5.32)
dict = 딕트, 딕셔너리라고 합니다. {}로 표현됩니다. key와 value로 구성 되어있어 원하는 자료를 찾기 편합니다. 
	ex) {"이름"="홍길동", "나이"="43", "도시"="서울"} 
    	여기서 이름, 나이, 도시를 key, 홍길동, 43, 서울은 value 입니다.

 

 


Python 튜플 연산자 종류

tuple_a = (1, 2, 3)
tuple_a[0] 1
tuple_a[0] = 10 immutable이라 불가능
del tuple_a[2] immutable이라 불가능
tuple_a[1:4] (2, 3)
tuple_a + tuple_a (1, 2, 3, 1, 2, 3)
tuple_a*3 (1, 2, 3, 1, 2, 3, 1, 2, 3)
len(tuple_a) 3
list(tuple_a) [1, 2, 3]

 

 

Python 튜플 표현방식 (,)

튜플의 표현방식은 리스트와 거의 동일합니다. 묶을 원소들을 ()로 감싸고 각각의 원소를 , 로 구분하면 됩니다. 다만 특이한 점은 ()가 없어도 원소들을 ,로 나열하면 튜플로 인식한다는 점입니다. 그런데 , 가 없이 ()으로 감싼다고 튜플이 되지는 않습니다. 조금 특이하죠? 

example_a = (1)
print(example_a)
print(type(example_a))

tupel_a = (1,)
print(tupel_a)
print(type(tupel_a))

tupel_a = 1, 2, 3,
print(tupel_a)
print(type(tupel_a))

example_b = [1]
print(example_b)
print(type(example_b))

 

 

Python 튜플 연산자 tuple[int]

튜플도 리스트와 같은 배열이기 때문에 index로 element를 호출할 수 있습니다. 

tuple_a = (1, 2, 3)
print(tuple_a[0])

 

 

Python 튜플 연산자 tuple[int]=

다만! 배열이라서 호출은 가능하지만 수정은 불가능합니다. 왜 불가능하죠? immutable이라서 그렇습니다.

tuple_a = (1, 2, 3)
tuple_a[0] = 4

 

 

Python 튜플 연산자 del tuple[int]

수정이 안되니깐 당연히 삭제도 불가능합니다.

tuple_a = (1, 2, 3)
delf tuple_a[0]

 

 

Python 튜플 연산자 tuple[int:int]

수정과 삭제는 안되었지만, index로 호출이 가능하지 리스트처럼 여러 element를 범위로 호출할 수 있습니다.

tuple_a = (1, 2, 3, 4, 5, 6)
print(tuple_a[2:5])

 

 

Python 튜플 연산자 tuple + tuple

수정, 삭제가 불가능한데 그럼 리스트처럼 새로운 원소를 추가는 어떻게 할까요? 리스트처럼 한 개 한 개를 append 할 수는 없습니다. 조금 돌아가는 방법이 있는데요.

tuple_a = (1, 2, 3)
print(tuple_a + tuple_a)
print(tuple_a + (4,))

튜플과 튜플의 더하기 가능하니, 1개의 원소만 더하고 싶다면 1개의 원소를 갖고 있는 튜플을 더해주면 됩니다.

 

 

Python 튜플 연산자 tuple * int

숫자형 데이터 타입의 연산자에서 보셨다면 곱하기가 불가능한 거 아니냐 라고 생각하시겠지만, tuple과 tuple 간의 곱하기는 불가능합니다. 하지만 리스트처럼 튜플과 인트의 곱하기는 가능합니다.

tuple_a = (1, 2, 3)
print(tuple_a * 3)
print(tuple_a * tuple_a)

 

 

Python 튜플 연산자 len(tuple)

튜플의 총길이를 구하는 방법은 리스트와 동일합니다.

tuple_a = (1, 2, 3)
print(len(tuple_a))

 

 

Python 튜플 연산자 list(tuple), tuple(list)

여기까지 쭉 보셨다면 튜플과 리스트가 거의 동일하다는 느낌을 받으실 수 있으실 겁니다. 그래서 튜플과 리스트는 서로 상호변경이 가능합니다.

tuple_a = (1, 2, 3)
print(list(tuple_a))

list_a = [1, 2, 3, 4, 5, 6]
print(tuple(list_a))

그럼 이렇게 상호 교환이 가능하다면 튜플도 제한 없이 리스트처럼 수정, 삭제가 가능하다는 거 이해가 되실까요? 불편한 과정일 수 있지만, 튜플의 특정 index의 element를 수정하고 싶다면, 튜플을 리스트로 교환하고 수정하고 다시 튜플로 바꾸면 되지 않을까요? (실제로는 이렇게 하면 안 되는 경우도 있긴 합니다.)

 

오늘은 파이썬 튜플의 연산자에 대해서 배워보았습니다. 이제 파이썬 기초가 1개 남았습니다. 딕트입니다. 제 나름으로는 가장 좋아하고 편하고 자주 쓰는 기능입니다. key와 value가 있기 때문에 index로 element를 구하지 않고 key만 알고 있다면 원하는 value를 딱딱 특정해서 호출이 가능하니깐요. 다음 포스트에서 뵙겠습니다.

반응형

댓글