CS & DS/Basic Python with Data Crawling

Python Data type (tuple) 파이썬 자료형 (튜플)

EthanJ 2022. 10. 8. 18:09

Python Data type 파이썬 자료형


5) 튜플 (tuple)

  • 생성 문법 기호 : ( )
  • 아이템을 수정/삭제할 수 없기 때문에 실수로 데이터가 변경되거나 삭제되는 위험이 적다.
  • 객체를 저장하는데 더 적은 메모리를 사용한다.
  • dictionay 자료형의 key로 활용할 수 있다.
  • method의 parameter는 tuple 자료형으로 전달된다.

 

1. 생성하기

# 하나의 item을 가진 리스트

a = [1]
type(a)
list

 

# 생성 문법 기호: 소괄호()는 생략 가능 > 대신 comma(,)는 무조건 1개 이상

# 소괄호() > 함수 parameter, tuple 할당, 산술연산 등에서 사용 됨
# > tuple 표기 시 생략 가능 > but comma(,)로 item 구분해서 tuple 선언
# 대괄호[] > list 선언 시에만 사용 됨 > list 선언 시 필수 기재

tu1 = (1)
print(type(tu1))

tu2 = (1,)
print(type(tu2))
<class 'int'>
<class 'tuple'>

 

# 함수 tuple(list) > 리스트를 튜플로 변환 가능

a = [1]
b = tuple(a)

print(type(a), type(b))
print(a, b)
<class 'list'> <class 'tuple'>
[1] (1,)

 

# 변수 하나에 여러 값을 ,로 나열해 대입 > tuple로 인식

x = 12, 34, 56, 78
print(x)

print(type(x))

print(type(x[0]))
(12, 34, 56, 78)
<class 'tuple'>
<class 'int'>

 

# 변수 여러개에 > 변수 개수와 item 개수가 동일한 tuple 할당 > item을 각 변수에 하나씩 나눠서 값을 받음

x1, x2, x3 = 1, 2, 3
print(x1), print(x2), print(x3)
print(type(x1), type(x2), type(x3))
1
2
3
<class 'int'> <class 'int'> <class 'int'>

 

2. 인덱싱(indexing)

x[0]
12

 

3. 슬라이싱(slicing)

# slicing의 return값 > 원본 data type과 동일한 type 반환

x[:2]
(12, 34)

 

4. tuple 연산자

  • 산술 연산자 : +, *
# 여러 tuple의 item을 합쳐서 새로운 tuple 만들기 > + 연산자

x + x
(12, 34, 56, 78, 12, 34, 56, 78)

 

# + 연산자 > return !=None > 원본에 영향 없으므로 논리적 문제 없음

x
(12, 34, 56, 78)

 

# 한 개의 tuple을 반복확장해서 새로운 tuple 만들기 > * 연산자

x * 3
(12, 34, 56, 78, 12, 34, 56, 78, 12, 34, 56, 78)
 

5. tuple 수정, 삭제 > 불가능!

# 수정하기 > indexing으로 하나의 item에 접근해서 수정 > Error

x[0] = 0 # TypeError
TypeError: 'tuple' object does not support item assignment

 

# 삭제하기 > del + indexing > Error

del x[0] # TypeError
#tuple 수정, 삭제 > 불가능!
TypeError: 'tuple' object doesn't support item deletion