파이썬(Python) 자료구조 ②튜플

반응형

 

* 자료구조 종류 및 표 비교

튜플

종류 순서 수정 기호 사용법
튜플(tuple) O X ( ) 소괄호 newtuple = ()
newtuple = tuple()
newtuple = (123, 456, 789)
newtutple = 123, 456, 789

※. 참고사항

순서 O = 인덱싱/슬라이싱 가능

* 파이썬 인덱싱 및 슬라이싱 개념 및 실습 요약

 

생성

# 빈 튜플 만들기
# 첫 번째 방법
coin = ()
print(type(coin))
#<class 'tuple'>

# 두 번째 방법
coin = tuple()
print(type(coin))
#<class 'tuple'>
# 데이터가 있는 튜플 만들기
# 첫 번째 방법
coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
print(type(coin))
#<class 'tuple'>

# 두 번째 방법
coin = 'BTC', 'ETH', 'XRP', 'BNB', 'USDT'
print(type(coin))
#<class 'tuple'>

 

인덱싱

튜플은 순서가 존재하므로 정수 값을 활용해 인덱싱 가능

# 인덱싱 활용해 특정 데이터 출력
coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
print(coin[0])
BTC
print(coin[3])
BNB

 

슬라이싱

튜플은 순서가 존재하므로 정수 값을 활용해 슬라이싱 가능

# 슬라이싱 활용해 특정 데이터 출력
coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
# 처음부터 1번째 값까지
print(coin[:2])
('BTC', 'ETH')

# 1번째부터 2번째 값까지
print(coin[1:3])
('ETH', 'XRP')

# 처음부터 마지막 값까지
print(coin[::1])
('BTC', 'ETH', 'XRP', 'BNB', 'USDT')

# 처음부터 마지막 값까지 2개씩 건너뛰면서
print(coin[::2])
('BTC', 'XRP', 'USDT')

# 뒤에서부터 역순으로
print(coin[::-1])
('USDT', 'BNB', 'XRP', 'ETH', 'BTC')

# 뒤에서 2번째부터 마지막 값까지
print(coin[-2:])
('BNB', 'USDT')

# 뒤에서부터 역순으로 2개씩 건너뛰면서
print(coin[::-2])
('USDT', 'XRP', 'BTC')

# 뒤에서 2번째부터 역순으로 2개씩 건너뛰면서
print(coin[-2::-2])
('BNB', 'ETH')

 

수정

불가능

# 튜플은 한번 만들어지면 수정이 불가능하다.
coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
coin[0] = 'BTCKRW' # 0번 인덱스 값을 'BTC' → 'BTCKRW'로 변경하려고 했더니
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[58], line 2
      1 coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
----> 2 coin[0] = 'BTCKRW'

TypeError: 'tuple' object does not support item assignment

# 삭제 역시 데이터 수정 행위에 해당되므로 불가능하다.
del coin[0] # 0번 인덱스 값을 삭제하려고 했더니
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[60], line 2
      1 print(coin)
----> 2 del coin[0]

TypeError: 'tuple' object doesn't support item deletion

 

튜플을 수정하려면?

기본적으로 튜플은 변하지 않는 값들을 저장하는 자료구조이다. 그래서 조금이라도 변경될 여지가 있다면 리스트 사용을 권장하며, 실제로 리스트가 튜플보다 훨씬 많이 쓰인다. (물론 상황에 따라 케바케)

 

그런데 이미 튜플로 사용 중이며, 값을 수정하고 싶다면?

리스트 ← → 튜플 형변환 방법

coin = ('BTC', 'ETH', 'XRP', 'BNB', 'USDT')
print(type(coin))
#<class 'tuple'>

# 튜플을 리스트로 변환
# 원본 튜플(coin)을 그대로 보존하는것이 안전하다. 그래서 coin2라는 새로운 변수를 활용한다.
coin2 = list(coin)
print(coin2)
['BTC', 'ETH', 'XRP', 'BNB', 'USDT']
print(type(coin2))
#<class 'list'>

# 리스트로 변환된 coin2 내 원하는대로 데이터 수정하기
coin2[0] = 'BTC-KRW'
coin2[1] = 'ETH-BTC'
coin2[2] = 'XRP-KRW'
del coin2[-2:]
print(coin2)
['BTC-KRW', 'ETH-BTC', 'XRP-KRW']

# 수정 완료했으면 리스트를 튜플로 변환
# 원본 튜플(coin)에 수정 및 검토가 완료된 데이터가 든 coin2를 튜플 형태로 덮어쓰기(저장)
coin = tuple(coin2)

# 확인
print(coin)
['BTC-KRW', 'ETH-BTC', 'XRP-KRW']
print(type(coin))
#<class 'tuple'>

 

반응형

댓글

Designed by JB FACTORY