본문 바로가기
Python

[Python 기초] 파이썬 자료형 - 튜플(tuple)

by dev수니 2021. 3. 31.
반응형

 

 1  튜플 (tuple)의 특성

 

 

사용방식은 리스트랑 똑같다. 여러개의 데이터를 동시에 저장한다. ()를 사용한다.

변수명 = (데이터1, 데이터2, 데이터3, ...)

1
2
3
>>> tuple1 = ()
>>> type(tuple1)
<class 'tuple'> # 타입 확인
cs

 

 

아래 보기를 보면 리스트와 똑같이 여러 타입의 데이터를 저장할 수 있다.

1
2
3
4
5
>>> tuple2 = (1,2,3,4,5)
>>> tuple3 = ("python",1,2.1)
>>> tuple2; tuple3;
(12345)
('python'12.1)
cs

 

 

하지만 리스트와는 다른 점이 있는데 그 차이를 다음 보기에서 확인해보자.

1
2
3
4
5
>>> del tuple3[2]
Traceback (most recent call last):
  File "<pyshell#13>", line 1in <module>
    del tuple3[2]
TypeError: 'tuple' object doesn't support item deletion
cs

 

 

tuple은 list와는 다르게 고정적이어서 데이터의 삭제가 불가능하다.

또한 데이터의 수정도 불가능한 모습을 볼 수 있다.

 

 

1
2
3
4
5
>>> tuple3[2= 1000
Traceback (most recent call last):
  File "<pyshell#14>", line 1in <module>
    tuple3[2= 1000
TypeError: 'tuple' object does not support item assignment
cs

 

 

 

 

결과적으로 튜플은 데이터의 수정, 삭제가 모두 불가능한 특징을 갖고 있다.

 

그래서 필요한 것이 리스트 형변환이다. 데이터의 수정이나 삭제를 원할 경우 리스트로 형변환해주고 수정 또는 삭제해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
>>> tuple2 = (1,2,3,4,5)
>>> list(tuple2)   # 리스트로 형변환
[12345]
>>> tuple2
(12345)     # 리스트형태로 저장되지 않음.
>>> list1 = list(tuple2) # 변수 list1에 리스트형태로 형변환하여 저장
>>> list1
[12345]
>>> list1[2= 1000     # 데이터 수정도 가능.
>>> list1
[12100045]
cs

 

 

 

튜플에 데이터를 하나만 입력해보자. 데이터 입력 후 type()를 사용해주면 경우 다음과 같이 반환된다.

 

1
2
3
>>> tuple3 = (1)
>>> type(tuple3)
<class 'int'>
cs

 

 

분명히 ( )를 사용하여 tuple형태로 입력해 주었지만 타입이 int형으로 나온 것을 볼 수 있다.

이는 데이터를 하나만 입력할 경우에 나타나는 것으로 데이터를 하나만 입력하고서도 tuple형으로 저장되길 원할 경우 다음과 같이 값을 입력하고 ","를 추가해주면 된다.

1
2
3
>>> tuple4 = (1,)
>>> type(tuple4)
<class 'tuple'>
cs

 

 

또한 튜플은 괄호 생략도 가능하다.

1
2
3
>>> tuple5 = 1,2,3,4
>>> type(tuple5)
<class 'tuple'>
cs

 

 

 

튜플 안에 튜플이나 리스트도 들어갈 수 있다.

1
2
3
4
5
6
>>> tuple6 = ([1,2,3],"python",100.2)
>>> type(tuple6)
<class 'tuple'>
>>> tuple7 = ([1,2,3],"python",100.2,(1,2,3))
>>> type(tuple7)
<class 'tuple'>
cs

 

 

 

그러면 튜플 안의 리스트 안의 값은 어떻게 출력할까?

 

변수 tuple6 에 저장된 튜플의 경우 [1,2,3],"python",100.2 을 저장하는 세개의 큰 공간이 존재하고 첫번째 공간안에 또 1,2,3 이 들어갈 세 공간이 나뉘어진 형태이다.

 

따라서 다음과 같이 입력하면 튜플안의 리스트 안의 값을 이용할 수 있다.

1
2
>>> tuple6[0][1]
2
cs

 

 

 

또한 튜플 안의 리스트 안의 값은 수정이 가능하다.

1
2
3
>>> tuple7[0][1= 10000
>>> tuple7
([1100003], 'python'100.2, (123))
cs

 

 

 


 

 

 

 

 2  튜플 슬라이싱과 연산

 

 

1. 튜플 슬라이싱

튜플도 인덱스 번호가 부여되기 때문에 *인덱싱을 통해 슬라이싱이 가능하다.

  tip 인덱싱 : 출력, 저장 용도로 직접 접근하는 방법.

1
2
3
4
5
6
7
8
>>> tuple2
(12345)
>>> list4 = tuple2[:3]
>>> list4
(123# 리스트 형태가 아닌 튜플 형대로 저장되었다.
>>> list4 = list(list4)  # 리스트 형태로 형변환
>>> list4
[123]
cs

 

 

 

2. 튜플 연산

튜플도 리스트와 마찬가지로 연산이 가능하다.

1
2
3
4
5
6
7
8
>>> tuple2 + tuple3   # + 연산
(12345'python'12.1)
>>> tuple2 * 2        # * 연산
(1234512345)
 
>>> tuple2 + 6        # !!!에러!!!
>>> tuple3 * 1.1      # !!!에러!!!
>>> tuple2 * tuple3   # !!!에러!!!
cs

리스트와 마찬가지로 +연산의 경우 튜플형끼리 연산하여 출력할 경우 두 튜플이 연결되어 나타나고 *연산의 경우 튜플을 곱해준 수 만큼 반복하여 출력해준다.

오류 또한 줄6~8을 보면 똑같이 나타나는 것을 볼 수 있다.

 

 

 

 


 

 

 

 3  튜플 함수

 

 

 

1. count(value) : 일차하는 데이터의 갯수를 반환한다.

1
2
3
>>> tuple8 = ("python","java","Zython","c++","python")
>>> print(tuple8.count("python"))
2
cs

 

 

 

 

2. index(value) : 값이 위치하는 인덱스를 반환한다.

1
2
>>> print(tuple8.index("python"))
0
cs

위 보기와 같이 중복되는 데이터가 있어도 제일 앞에있는 인덱스번호를 반환한다. 따라서 중복되는 값 중 뒤에있는 값을 찾으려면 제일 앞에있는 값의 인덱스 번호 이후부터 찾도록 설정해준다.

 

 

 

3. index(value,start index) : 값(value)이 위치라는 인덱스를 start index 위치 이후 부터 찾아 반환한다.

1
2
>>> print(tuple8.index("python",1))  # 인덱스1번 부터 값을 찾는다.
4
cs

 

 

 

 

 

 

반응형

댓글