개몽가

[Python] 튜플 (Tuple) 본문

Skill/Python

[Python] 튜플 (Tuple)

개몽가 2021. 9. 8. 22:38

튜플(Tuple) 특징

  • 수정 O, 중복 O, 수정 X, 삭제 X ; immutable
  • 선언 시 괄호 있어도 되고 없어도 됨
  • 원소 한 개인 경우, 뒤에 콤마 있어야 튜플로 인식됨
  • 수정 및 삭제 불가하지만 연산 가능
  • 리스트와 동일하게 슬라이싱을 할 수 있는 시퀀스 특징 가짐
  • 팩킹, 언팩킹 개념 존재

 

# 선언
a = ()
a2 = (1, 2, 3)
b = (1) # 원소가 하나일 때 튜플로 인식 안함. 끝이 ,로 끝나야 튜플로 인식함
b2 = (1,) # 튜플로 선언해서 immutable 한 변수로 선언
b3 = 1, # 괄호가 없어도 튜플로 인식함

# 튜플 수정 시도
a2[0] = 2
# 에러 발생; TypeError: 'tuple' object does not support item assignment

# 튜플 수정가능한 리스트로 형 변환
b = list(a2[-1]) #a2[-1] = 3
b[0] = 123
print(b) #123 출력

#튜플 연산 : 내부 원소가 변경 및 삭제되지 않는다면 연산을 통한 튜플 원소 갯수가 늘어나는 것은 허용함
c = (123, 456, 789)
a3 = (100, 1000, ('abc', 'cde'))
print(a3+c) #(100, 1000, ('abc', 'cde'), 123, 456, 789) 출력됨
print(c*3) #(123, 456, 789, 123, 456, 789, 123, 456, 789) 출력됨

#튜플 함수
a = (1, 2, 3, 4, 2)
print(a.index(3)) # 3의 인덱스는 몇이냐; 2 출력
print(a.count(2)) # 2의 갯수가 몇개 있냐; 2 출력


# 팩킹 & 언팩킹(packing, unpacking)
# 팩킹
t = ('abc', 'cde', 'egh') # 하나로 묶다

#언팩킹1
(x1, x2, x3) = t #묶여있던 것을 각각 풀어서 원소에 대입시키는 것, 괄호가 없어도 언팩킹이 이루어지긴 함
print(type(x1), type(x2), type(x3))
print(x1, x2, x3)

# 팩킹 & 언팩킹
t2 = 1, 2, 3 #괄호가 없어도 튜플임 ; 팩킹
t3 = 4, #원소 1개이지만 콤마 찍었지만 애도 튜플 ; 팩킹
x1, x2, x3 = t2 #언팩킹
x4, x5, x6 = 4, 5, 6 #언팩킹; 각각 원소를 할당

 

 

immutable 자료형이 필요한 경우

  • mutable type와 달리 데이터 할당 공간이나 크기가 달라지지 않기 때문에 소프트웨어의 성능 향상에 도움이 됨
  • 또한 데이터가 오염되지 않을 것이라는 보장을 할 수 있음; 프로그래머가 자기 코드를 신뢰할 수 있음

 

List  vs.  Tuple

List : 목록 형식의 데이터 다루는데 적합

Tuple : 위경도 좌표 또는 RGB 색상처럼 작은 규모의 자료구조에 적합

 

'Skill > Python' 카테고리의 다른 글

[Python] 자료형 리스트  (0) 2021.07.27
[Python] 파이썬 문자형, 슬라이싱  (0) 2021.07.12
[Python] 파이썬 숫자형  (0) 2021.07.07
[Python] 파이썬 지원 자료형  (0) 2021.07.07
[Python] 변수 및 자료형, type, id 함수  (0) 2021.07.04