1 튜플 (tuple)의 특성
사용방식은 리스트랑 똑같다. 여러개의 데이터를 동시에 저장한다. ()를 사용한다.
변수명 = (데이터1, 데이터2, 데이터3, ...)
아래 보기를 보면 리스트와 똑같이 여러 타입의 데이터를 저장할 수 있다.
1
2
3
4
5
|
>>> tuple2 = (1,2,3,4,5)
>>> tuple3 = ("python",1,2.1)
>>> tuple2; tuple3;
(1, 2, 3, 4, 5)
('python', 1, 2.1)
|
cs |
하지만 리스트와는 다른 점이 있는데 그 차이를 다음 보기에서 확인해보자.
1
2
3
4
5
|
>>> del tuple3[2]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <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 1, in <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) # 리스트로 형변환
[1, 2, 3, 4, 5]
>>> tuple2
(1, 2, 3, 4, 5) # 리스트형태로 저장되지 않음.
>>> list1 = list(tuple2) # 변수 list1에 리스트형태로 형변환하여 저장
>>> list1
[1, 2, 3, 4, 5]
>>> list1[2] = 1000 # 데이터 수정도 가능.
>>> list1
[1, 2, 1000, 4, 5]
|
cs |
튜플에 데이터를 하나만 입력해보자. 데이터 입력 후 type()를 사용해주면 경우 다음과 같이 반환된다.
분명히 ( )를 사용하여 tuple형태로 입력해 주었지만 타입이 int형으로 나온 것을 볼 수 있다.
이는 데이터를 하나만 입력할 경우에 나타나는 것으로 데이터를 하나만 입력하고서도 tuple형으로 저장되길 원할 경우 다음과 같이 값을 입력하고 ","를 추가해주면 된다.
또한 튜플은 괄호 생략도 가능하다.
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
([1, 10000, 3], 'python', 100.2, (1, 2, 3))
|
cs |
2 튜플 슬라이싱과 연산
1. 튜플 슬라이싱
튜플도 인덱스 번호가 부여되기 때문에 *인덱싱을 통해 슬라이싱이 가능하다.
tip 인덱싱 : 출력, 저장 용도로 직접 접근하는 방법.
1
2
3
4
5
6
7
8
|
>>> tuple2
(1, 2, 3, 4, 5)
>>> list4 = tuple2[:3]
>>> list4
(1, 2, 3) # 리스트 형태가 아닌 튜플 형대로 저장되었다.
>>> list4 = list(list4) # 리스트 형태로 형변환
>>> list4
[1, 2, 3]
|
cs |
2. 튜플 연산
튜플도 리스트와 마찬가지로 연산이 가능하다.
1
2
3
4
5
6
7
8
|
>>> tuple2 + tuple3 # + 연산
(1, 2, 3, 4, 5, 'python', 1, 2.1)
>>> tuple2 * 2 # * 연산
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
>>> 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 |
'Python' 카테고리의 다른 글
[Python 기초] 파이썬 input() 연습문제 (0) | 2021.03.31 |
---|---|
[Python 기초] 파이썬 내장함수 - 입력함수 input() , map() 함수, split() (0) | 2021.03.31 |
[Python 기초] 파이썬 리스트 관련 함수 활용 (0) | 2021.03.31 |
[Python 기초] 파이썬 자료형 - 리스트(Arraylist)와 인덱스(index) (0) | 2021.03.31 |
[Python 기초] 파이썬 타입 변환, 형변환 (0) | 2021.03.30 |
댓글