질문이 있으십니까?

기본 컨텐츠 및 사용자가 직접 참여하여 만들어진 다양한 내용을 검색합니다.

4.2. 자료구조.튜플(tuple)

tuple(튜플)?

  • tuple(튜플)은 불변한 순서가 있는 객체의 집합입니다.
  • list형과 비슷하지만 한 번 생성되면 값을 변경할 수 없습니다.
  • list와 마찬가지로 다양한 타입이 함께 포함될 수 있습니다.
# tuple를 사용하지 않는다면 아래와 같이 변수가 많아지겠지요?
>>> a = 10
>>> b = 20
>>> temp = a               # a 값을 temp에 저장   (temp = 10)
>>> a = b                  # b 값을 a에 저장      (a = 20)
>>> b = temp               # temp 값을 b에 저장   (b = 10)
>>> print(a, b)
20 10

>>> c = 10
>>> d = 20
>>> c, d = d, c # 이런형태도 가능함을 기억해주세요.
>>> print(c,d)
20 10
# list와 마찬가지로 다양한 타입이 함께 포함될 수 있습니다.
>>> t = (1, "korea", 3.5, 1)
>>> print(t)
(1, 'korea', 3.5, 1)
>>> print(type(t))
<class 'tuple'>

# 순서가 있기때문에 인덱스로 접근 가능합니다.(0부터시작)
>>> print(t[0])
1
>>> print(t[1])
'korea'
>>> print(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이 되지 않습니다.
# 그러나, 회피하는 방법이 있습니다. 한개의 원소 뒤에 콤마를 찍어주면 tuple이 유지됩니다.
>>> h = (350)
>>> type(h)
<class 'int'>
>>> h = (350,) # 이렇게 뒤에 콤마를 찍어주면 튜플형이 됩니다.
>>> type(h)
<class 'tuple'>
>>> len(h)
1 #원소의 갯수입니다.

# 괄호()를 입력했지만, 괄호가 필수 조건은 아닙니다.
>>> 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(튜플)을 이용하여 변수를 한꺼번에 할당할 수 있습니다.
>>> lower, upper = minmax([7,5,2,1,11,15,55])
>>> lower
1
>>> upper
55

# tuple속에 tuple을 이용해 이러한 할당도 가능합니다.
>>> (a, (b,(c, d))) = (4,(3,(2,1)))
>>> print(a)
4
>>> print(b)
3
>>> print(c)
2
>>> print(d)
1
# 튜플변수 쉽게만들기
>>> t = ('a', 'b', 'c')
>>> print(type(t))
&class 'tuple'>

# 빈튜플 만들기
>>> t = ()
>>> print(type(t))
&class 'tuple'>
# 튜플형으로 변환
>>> tuple([1, 7, 5, 3, 9])
(1, 7, 5, 3, 9)
>>> tuple("abcde")
('a', 'b', 'c', 'd', 'e')

# in절로 포함여부를 체크
>>> var1 = 'a' in ('a', 'b', 'c')
>>> print(var1)
True
>>> 5 in ('a','b','c')
False
>>> 5 not in ('a','b','c')
True

* ?

>>> def magu_print(x, y, *rest):        # 마구찍어 함수
...   print x, y, rest #세번째부터끝까지 튜플형태로 변환
...
>>> magu_print(1,2,3,5,6,7,9,10)
1 2 (3, 5, 6, 7, 9, 10) # list형과 비슷하네요.
# 인자를 두 개 이상만 주면 나머진 다 알아서 처리한답니다.
# 함수를 정의할 때 인자에 별표를 붙여두면 그 이후에 들어오는 것은 모두 튜플에 집어넣는 것이죠.
# 위에선 (3, 5, 6, 7, 9, 10)가 하나의 튜플로 묶였습니다.

, ?

>>> one = 5, #원소를 하나만 가진 튜플을 구지 만들 땐 원소 뒤에 콤마(,)를 꼭 찍어줄것
>>> one
(5,)

: ?

>>> p = (1,2,3)
>>> q = p[:1] + (5,) + p[2:]
>>> q
(1, 5, 3)
>>> r = p[:1], 5, p[2:]
>>> r
((1,), 5, (3,))
그리고 튜플은 리스트와 달리 원소값을 직접 바꿀 수 없기 때문에, 문자열에서 했던 것처럼 오려붙이는 방법을 써야한다는 것을 알아두세요.
>>> p = (1, 2, 3)
>>> q = list(p)                  # 튜플 p로 리스트 q를 만듦
>>> q
[1, 2, 3]
>>> r = tuple(q)                 # 리스트 q로 튜플 r을 만듦
>>> r
(1, 2, 3)
튜플을 리스트로, 리스트를 튜플로 쉽게 바꿀 수도 있답니다.

댓글을 작성하세요

문서 이력

  • 2020-06-07 날짜로 신달수 님으로 부터 컨텐츠명이 변경 되었습니다.
  • 2020-06-09 날짜로 신달수 님께서 등록 작업을 하였습니다.
  • 2020-06-14 날짜로 신달수 님께서 수정 작업을 하였습니다.
  • 2020-06-17 날짜로 신달수 님께서 수정 작업을 하였습니다.