[Python] 파이썬에서 튜플(Tuple) 다루기, 튜플 써야 할 때

    튜플(Tuple)이란 리스트와 동일하게 다양한 데이터를 집합형태로 저장을 한다. 하지만 리스트와 차이점이 하나 있는데 그건 바로 튜플은 한번 생성하면 변경을 할 수 없다는 것이다. 즉, 변경을 하는 부분(삽입, 삭제, 수정)을 제외한 나머지 처리는 리스트의 방식과 같다.

     

    파이썬에서 튜플 다루기, 튜플 써야 할 때

     

    튜플 생성

    >>> str_data = ('빅뱅','방탄소년단','블랙핑크','트와이스')
    >>> type(str_data)
    <class 'tuple'>
    >>> str_data
    ('빅뱅', '방탄소년단', '블랙핑크', '트와이스')

    리스트는 []를 사용해서 초기화를 할 수가 있었지만 튜플을 한번 생성을 하면 수정을 할 수 없기 때문에 초기화를 할 때 한번에 값을 넣는 것이 좋다. 

     

    튜플 인덱싱 및 슬라이싱

    # 0번째 값을 불러온다
    >>> str_data[0]
    '빅뱅'
    
    # 뒤에서 첫번째 값을 불러온다
    >>> str_data[-1]
    '트와이스'
    
    # 모든 데이터를 불러온다
    >>> str_data[:]
    ('빅뱅', '방탄소년단', '블랙핑크', '트와이스')
    
    # 1번째 데이터와 마지막 데이터 앞까지 데이터를 불러온다
    >>> str_data[1:-1]
    ('방탄소년단', '블랙핑크')

    튜플의 값을 가져오는 방법과 슬라이싱 방식은 리스트와 완전히 동일하다. 이 자체의 행위가 값을 변형하지 않기 때문이다.

     

    튜플 값 추가가 불가능한 경우

    >>> str_data.append('엑소')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'append'

    튜플에 append는 존재하지 않고

    >>> str_data.insert(1, '엑소')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'insert'

    insert 역시 불가능하다. 즉 해당 튜플에는 값을 추가하는 것이 불가능하다는 의미이다. 

     

     

    튜플에 값 추가 방법

    >>> str_data
    ('빅뱅', '방탄소년단', '블랙핑크', '트와이스')
    
    # 튜플값에 새로운 튜플을 더하고, str_data에 다시 선언
    >>> str_data = str_data + ('엑소', )
    
    # 엑소가 추가된 것을 확인할 수 있다.
    >>> str_data
    ('빅뱅', '방탄소년단', '블랙핑크', '트와이스', '엑소')

    튜플에 값을 추가할 수 있는 방법이 없는 것만이 아니다. 기존 튜플에 +(더하기) 연산을 통하여 새로운 튜플을 합친 후 다시 원래의 튜플 변수에 더하면 append와 동일한 효과를 얻을 수 있게 된다. 튜플을 더할 때 값이 하나일 경우 꼭 쉼표(,)를 넣어줘서 튜플형임을 알려야 한다.

     

    쉼표를 넣지 않는 데이터를 합칠 경우 아래와 같이 에러가 발생하게 된다.

    >>> str_data = str_data + ('소녀시대')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can only concatenate tuple (not "str") to tuple

     

    튜플을 사용해야 할 때 (사용 이유)

    리스트는 가변적(mutable)이고 튜플은 불변적(immutable)이다. 튜플이 가능한 것은 리스트가 모두 처리할 수 있기 때문에 사실상 개발을 할 때 튜플은 안써도 아무런 문제가 되진 않는다. 다만, 어떤 값을 저장하고 더이상 수정,삽입,삭제할 필요가 없다면 튜플을 사용하는 것이 시스템 상으로 더 좋다.

     

    리스트는 가변적이어야 하기 때문에 튜플보다 더 많은 처리를 해야 한다. 튜플은 오로지 데이터를 초기에 생성한 후 가져오는 작업만 하지만 리스트는 수많은 처리를 해야 한다. 즉 처리량도 많고, 메모리도 더 많이 잡아먹는다는 의미이다. 매우 작은 데이터를 핸들링 할때에는 이러한 부분이 사실 무의미하겠지만, 대용량의 데이터를 처리하거나 여러명이 데이터를 같이 처리를 할때에는 리스트로 선언을 하는 것보다 아무래도 튜플이 더 안전적일 것이다.

     

    연관포스팅

    2020/12/23 - [Language/Python] - [Python] 파이썬에서 리스트 사용하기

     

    [Python] 파이썬에서 리스트 사용하기

    리스트란 관계가 있는 데이터를 벡터에 묶는 데이터 형이다. 파이썬의 리스트는 다른 언어의 리스트와 다르게 서로 다른 형들을 하나의 리스트로 관리할 수 있기 때문에 편리성이 있는 반면에

    needneo.tistory.com

     

    반응형

    댓글

    Designed by JB FACTORY