Python(파이썬) 기본 - 16. tuple(튜플)

아래 내용은 공부한 것을 정리하므로 틀린 내용이 포함되어 있을 수 있습니다.

1. tuple(튜플)

  • tuple(튜플)은 불변한 순서가 있는 객체의 집합입니다.
  • list형과 비슷하지만 한 번 생성되면 값을 변경할 수 없습니다.
  • REPL에서 확인해봅니다.

  • list와 마찬가지로 다양한 타입이 함께 포함될 수 있습니다.
      >>> t = (1, "korea", 3.5, 1)
      >>> t
      (1, 'korea', 3.5, 1)
      >>> type(t)
      <class 'tuple'>
    
  • 순서가 있기때문에 인덱스로 접근 가능합니다.
      >>> t[0]
      1
      >>> t[1]
      'korea'
    
  • len내장함수로 길이를 구할 수 있습니다.
      >>> len(t)
      4
    
  • list와 마찬가지로 for loop을 돌 수 있습니다.
      >>> for i in t:
      ...     print(i)
      ... 
      1
      korea
      3.5
      1
    
  • + 연산으로 tuple(튜플)을 추가할 수 있습니다.
      >>> t = t + (3 ,5)
      >>> t
      (1, 'korea', 3.5, 1, 3, 5)
    
  • * 연산으로 tuple(튜플)을 반복할 수 있습니다.
      >>> t * 2
      (1, 'korea', 3.5, 1, 3, 5, 1, 'korea', 3.5, 1, 3, 5)
    
  • tuple(튜플) 속에 tuple이 포함될 수 있습니다.
      >>> a = ((1 ,2) , (3,4), (5,9))
      >>> a[2]
      (5, 9)
      >>> a[2][1]
      9
    
  • tuple(튜플)이 하나의 원소만 존재하는 경우는 tuple(튜플)이 되지않습니다.
  • but 회피하는 방법이 있습니다. 한개의 원소 뒤에 콤마를 찍어주면 tuple이 유지됩니다.
      >>> h = (350)
      >>> type(h)
      <class 'int'>
      >>> h = (350,)
      >>> type(h)
      <class 'tuple'>
      >>> len(h)
      1
    
  • 위에 예제들 속에서 tuple(튜플)은 ‘( )’를 입력했습니다만, 괄호가 필수 조건은 아닙니다.
      >>> p = 1, 3, 2, 5, 7
      >>> type(p)
      <class 'tuple'>
    
  • tuple(튜플)을 이용하여 함수에서 여러 값을 한꺼번에 리턴시킬 수 있습니다.
      >>> def minmax(items):
      ...     return min(items), max(items)
      ...  
      >>> minmax([7,5,2,1,11,15,55])
      (1, 55)
    
  • tuple(튜플)을 이용하여 변수를 한꺼번에 할당할 수 있습니다.(자바스크립트 ES6 해체할당과 비슷합니다.)
      >>> lower, upper = minmax([7,5,2,1,11,15,55])
      >>> lower
      1
      >>> upper
      55
    
  • tuple(튜플)속에 tuple(튜플)을 이용해 이러한 할당도 가능합니다.

      >>> (a, (b,(c, d))) = (4,(3,(2,1)))
      >>> a
      4
      >>> b
      3
      >>> c
      2
      >>> d
      1
    
  • 보통 다른언어에서 두 변수의 값을 서로 바꾸려면, 새로운 변수가 하나 필요하지만 파이썬에서는 튜플의 해체할당기능을 통해 바로 바꿔줄 수 있습니다.
      >>> a = '감자'
      >>> b = '고구마'
      >>> a, b  = b, a
      >>> a
      '고구마'
      >>> b
      '감자'
    
  • tuple(튜플)변환 - tuple(iterable한객체)로 tuple(튜플)로 변형할 수 있습니다.
      >>> tuple([1, 7, 5, 3, 9])
      (1, 7, 5, 3, 9)
      >>> tuple("abcde")
      ('a', 'b', 'c', 'd', 'e')
    
  • in 절로 포함되어 있는지 체크할 수 있습니다.
     >>> 'a' in ('a', 'b', 'c')
     True
     >>> 5 in ('a','b','c')
     False
     >>> 5 not in ('a','b','c')
     True