Login

Search

Learn 🇰🇷
2022.09.21 19:14

4.3 튜플(tuple)

Views 61 Votes 0 Comment 0

오늘은 튜플이라는 자료형이 어떤 쓸모가 있는지 알아보도록 하죠. 리스트와 비슷한 자료형이라는 정도만 알고 시작해 봅시다.

다른 언어를 공부해 보신 분은 두 변수의 값을 서로 바꾸어 본 적이 있으실 텐데요, 보통 다음과 같은 방법을 사용합니다.

>>> a = 10
>>> b = 20
>>> temp = a               # store a to temp   (temp = 10)
>>> a = b                  # store b to a      (a = 20)
>>> b = temp               # store temp to b   (b = 10)
>>> print(a, b)
20 10

 

 

이렇게 두 변수 값을 맞바꾸기 위해선 또 다른 변수 temp가 필요합니다. 좀 번거롭죠? 변수가 많을수록 더 귀찮아질 테구요. 그런데 파이썬에는 이런 일을 간단하게 할 수 있는 기막힌 방법이 있습니다.

>>> c = 10
>>> d = 20
>>> c, d = d, c
>>> print(c, d)
20 10

  

 

너무 간단하지요? 

세 번째 줄에서 등호 왼쪽은 cd라는 변수가 담긴 튜플이구요, 오른쪽은d와 c의 값이 담긴 튜플입니다. 그래서 d의 값은 c로 들어가고, c의 값은 d로 들어갑니다. 이런 일들이 차례차례 일어나는 것이 아니고, 동시에 처리된다는군요.

이번엔 함수에서 튜플이 요긴하게 쓰이는 것을 보여드리지요. 아래의 함수는 인자(매개변수)를 주는 대로 받아먹는 함수입니다.

>>> 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)

  

 

위 함수는 인자를 두 개 이상만 주면 나머진 다 알아서 처리한답니다. 함수를 정의할 때 인자에 별표를 붙여두면 그 이후에 들어오는 것은 모두 튜플에 집어넣는 것이죠. 위에선 (3, 5, 6, 7, 9, 10)가 하나의 튜플로 묶였습니다. 꽤 쓸만할 것 같죠? 다른 언어로 이런 함수를 만들려면 고생 꽤나 해야 할 거예요. 인자를 두 개, 세 개 넣어서도 실험해 보세요.

튜플의 좋은 점들을 구경했으니 이제 문법을 살펴봅시다.

>>> t = ('a', 'b', 'c')

  

 

튜플을 만들 때는 위와 같이 괄호를 써도 되고 안 써도 됩니다. 다만, 원소가 없는 튜플을 만들 때는 괄호를 꼭 써주세요.

>>> empty = ()

  

 

원소를 하나만 가진 튜플을 만들 땐 원소 뒤에 콤마(,)를 꼭 찍어주시고요.

>>> 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)                  # make list q with tuple p
>>> q
[1, 2, 3]
>>> r = tuple(q)                 # make tuple r with list q
>>> r
(1, 2, 3) 

  

 


List of Articles
No. Subject Author Date Views
Notice Learn What is Python? admin 2024.10.19 81
24 Learn 1.2 Variable admin 2022.11.03 82
23 Learn 1.1 Getting into Python admin 2022.11.01 105
22 Learn 🇰🇷 8.1 예외처리(try, except) admin 2022.10.27 41
21 Learn 🇰🇷 7.1. 클래스(class)와 인스턴스 admin 2022.10.27 69
20 Learn 🇰🇷 6.1 텍스트 파일 admin 2022.10.21 58
19 Learn 🇰🇷 5.3 여러 가지 모듈 admin 2022.10.15 56
18 Learn 🇰🇷 5.2 모듈 가져오기(import) admin 2022.10.07 55
17 Learn 🇰🇷 5.1 모듈이란 admin 2022.10.03 58
16 Learn 🇰🇷 4.5 세트(set) admin 2022.10.02 58
15 Learn 🇰🇷 4.4 딕셔너리(dict) admin 2022.09.30 61
» Learn 🇰🇷 4.3 튜플(tuple) admin 2022.09.21 61
13 Learn 🇰🇷 4.2 문자열과 리스트 admin 2022.09.16 58
12 Learn 🇰🇷 4.1 자료형 admin 2022.09.16 60
11 Learn 🇰🇷 3.4 람다(lambda) admin 2022.09.16 60
10 Learn 🇰🇷 3.3 지역변수, 전역변수 admin 2022.09.15 63
9 Learn 🇰🇷 3.2 반환(return)문 admin 2022.09.10 61
8 Learn 🇰🇷 3.1 함수 admin 2022.09.01 71
7 Learn 🇰🇷 2.3 for를 사용하는 반복문 admin 2022.08.24 55
6 Learn 🇰🇷 2.2 조건문 (if-elif-else) admin 2022.08.23 63
5 Learn 🇰🇷 2.1 while을 사용하는 반복문 admin 2022.08.23 57
Board Pagination Prev 1 2 3 Next
/ 3