티스토리 뷰
📌 (튜플)
리스트처럼 요소를 일렬로 저장한다. 리스트와 거의 비슷하지만 안에 저장된 요소를 변경, 추가, 삭제를 할 수 없다는 차이점이 있다. 위도 경도 좌표, RGB 색상표처럼 변하지 않는 값을 저장하기 위해 사용하며, 작은 규모의 자료 구조 구성에 적합하다.
📍 데이터 형에 상관없이 여러 값을 저장할 수 있다 = 모든 객체의 시퀀스
📍 요소의 변경, 추가, 삭제가 불가능하다 → 읽기 전용 리스트
📍 튜플 명으로 출력 시 (소괄호)까지 출력된다.
📍 값을 저장할 때 (소괄호)와 콤마를 사용하면 튜플이 되는데, 괄호를 생략할 수 있다
📍 첨자를 사용해 튜플 요소에 접근할 수 있다. (튜플 길이보다 큰 index를 사용하려고 하면 에러 발생)
👉 튜플 만들기 (튜플 패킹)
✔ 튜플 패킹 : 여러 데이터를 튜플로 묶는 것 ↔ 튜플 언패킹 : 튜플로 묶은 데이터 뿌리기
a = (1,3,5,7,9)
b = 2,4,6,8
c = b
d = list(b)
e = tuple(d)
f = a+b
print('a = {0}\nb = {1}\nc = {2}\nd = {3}\nd = {4}\nf = {5}'.format(a,b,c,d,e,f))
✔ (소괄호)를 사용해 (튜플)을 만들 수 있고, (소괄호)는 생략 가능하다.
✔ (튜플) 요소의 추가, 변경, 삭제는 불가능하지만, 다른 시퀀스에 값을 복사하거나 결합할 수는 있다.
✔ 형태가 다른 시퀀스에 복사하고자 한다면 형변환하자.
✔ 형태가 다른 시퀀스를 (튜플)에 저장하고 싶다면 tuple(시퀀스)를 사용해 형변환.
a = (1)
b = 1
c = 1,
d = (1,)
print('a는 ',type(a))
print('b는 ',type(b))
print('c는 ',type(c))
print('d는 ',type(d))
✔ (튜플)의 요소가 하나라면 소괄호로 묶어주어도 정수형 변수로 인식한다.
✔ 그러므로 반드시 콤마를 데이터 뒤에 붙여주어 (튜플) 임을 알려야 한다.
a = tuple(range(10))
b = tuple(range(3,6))
c = tuple(range(0,10,2))
print('a는 ',a)
print('b는 ',b)
print('c는 ',c)
✔ range로 값을 구하고 이를 (튜플)로 형변환하여 저장할 수 있다.
list1 = list(range(5))
list2 = list()
tuple1 = tuple(range(5,10))
tuple2 = tuple()
print('list1 = ',list1,' / list2 = ',list2)
print('tuple1 = ',tuple1,' / tuple2 = ',tuple2)
list2 = list(tuple1)
tuple2 = tuple(list1)
print('\nlist1 = ',list1,' / list2 = ',list2)
print('tuple1 = ',tuple1,' / tuple2 = ',tuple2)
✔ (튜플)과 [리스트] 간의 형변환은 위와 같다.
list = list('Hello')
tuple = tuple('World')
print(list)
print(tuple)
✔ (튜플)과 [리스트]에 문자열을 저장하면 문자 튜플과 문자 리스트가 생성된다.
👉 튜플 언패킹
tuple = (1,2,3)
#n1, n2 = tuple #ERROR!
n1, n2, n3 = tuple
print(tuple)
print('n1 = {0}, n2 = {1}, n3 = {2}'.format(n1,n2,n3))
✔ (튜플)의 데이터를 변수 여러 개에 한 번에 저장할 수 있다.
✔ 언패킹 할 요소의 수가 불일치하면 오류가 발생하니 주의하자.
n1, n2, n3 = 1, 2, 3
✔ 우항의 형태를 살펴보면 (소괄호)가 생략된 (튜플) 임을 알 수 있다.
✔ 즉, 튜플을 언패킹 해서 좌항의 변수들에게 할당하는 것과 같다.
a = 'hello'
b = 'world'
print(a,b)
a, b = b, a
print(a,b)
✔ 튜플 언패킹을 활용하면 임시 변수 없이 swap을 구현할 수 있다.
👉 튜플에 사용할 수 있는 메서드
✔ 튜플 언패킹을 활용하면 임시 변수 없이 swap을 구현할 수 있다.
메서드 | 설명 | |
+ | 메서드는 아니지만, 더하기 연산을 통해 결합 가능 | |
del 튜플[idx] |
||
검색 | .index() | 특정 값을 가진 요소 중 가장 첫번째의 요소의 인덱스 |
.count() | 특정 값을 가진 요소 개수 세기 | |
sorted(리스트) | 요소를 오름차순으로 정렬 (정렬된 새로운 리스트를 반환) | |
길이 | len(리스트) | 길이 (요소의 개수) 구하기 |
👉 튜플 : 검색 메서드
1. index()
a = ( 0, 1, 2, 3, 4, 2, 2 )
idx = a.index(2)
print(idx)
✔ index() 메서드는 (튜플)에서 특정 값의 인덱스를 구한다. 같은 값이 여러 개인 경우 처음 찾은 인덱스를 반환한다.
2. count()
a = ( 0, 1, 2, 3, 4, 2, 2 )
cnt = a.count(2)
print(cnt)
✔ count() 메서드는 리스트에서 특정 값의 개수를 구한다.
👉 튜플 : 내장 함수 sorted()
# 1. 첫번째 튜플 출력
a = ( 0, 1, 2, 3, 4, 2, 2 )
print('1.',a)
# 2. 오름차순 정렬
sortedA = sorted(a)
print('2.',sortedA)
# 3. 내림차순 정렬
sortedB = sorted(a, reverse=True)
print('3.',sortedB)
# 4. 오름차순 정렬 → 튜플로 형변환
sortedC = tuple(sorted(a))
print('4.',sortedC)
✔ sort() 메서드는 튜플 내부 요소의 위치를 바꾸어 정렬하므로 요소의 수정이 불가능한 튜플에서는 사용할 수 없다.
✔ 내장 함수 sorted()는 정렬된 리스트를 반환하므로, 기존의 튜플을 수정하지 않는다.
✔ 반환한 리스트를 튜플로 형변환해주어 튜플을 새로 만들어 사용할 수 있다.
👉 튜플 : 반복문에서 사용하기
numbers = ( 1,2,3,4,5,6,7,8 )
#for문
for i in numbers :
print(i, end=' ')
print()
#while문
length = len(numbers)
i = 0
while i<length :
print(numbers[i], end=' ')
i+=1
👉 튜플 : map() 사용하기
a = (1.2, 2.3, 3.4, 4.5)
a = tuple(map(int,a))
print(a)
print(type(a))
b = (1.2, 2.3, 3.4, 4.5)
b = map(int,a)
print(b)
print(type(b))
✔ 내장 함수인 map()은 데이터 여러 개를 한 번에 형변환 해주는 함수.
✔ map()의 원형은 map(func, iterable)로 첫 번째 인자는 함수, 두번째 인자는 시퀀스명을 의미한다..
✔ 첫번째 인수로 int를 넣어주었다는 것은 곧 int()를 사용해 형변환 하겠다는 의미.
✔ 형변환을 해주지 않으면 객체 map이 변수에 저장되므로, 원하는 시퀀스 형태로 형변환해서 저장하자.
[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과
'BackEnd > Python' 카테고리의 다른 글
[파이썬 기초] 02-4. 시퀀스 자료형 (0) | 2021.03.18 |
---|---|
[파이썬 기초] 02-3. {딕셔너리} (0) | 2021.03.18 |
[파이썬 기초] 02-1. [리스트] (0) | 2021.03.16 |
[파이썬 기초] 01-5. 조건문 / 반복문 (0) | 2021.03.16 |
[파이썬 기초] 01-4. 비트 연산자 / 논리 검증 (0) | 2021.03.16 |