티스토리 뷰

BackEnd/Python

[파이썬 기초] 02-2. (튜플)

JINSUKUKU 2021. 3. 18. 01:28

📌 (튜플)

리스트처럼 요소를 일렬로 저장한다. 리스트와 거의 비슷하지만 안에 저장된 요소를 변경, 추가, 삭제를 할 수 없다는 차이점이 있다. 위도 경도 좌표, 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을 구현할 수 있다.

  메서드 설명
추가
.append()    마지막 요소 뒤에 요소 하나 추가
.insert()    특정 위치(index)에 요소 추가
.extend()    마지막 요소 뒤에 또 다른 리스트 연결하여 결합
+    메서드는 아니지만, 더하기 연산을 통해 결합 가능
삭제 .pop()    특정 위치의 요소 삭제

del 튜플[idx]
   특정 위치의 요소 삭제
.remove()    특정 값을 가지는 요소 삭제
.clear()    모든 요소 삭제
검색 .index()    특정 값을 가진 요소 중 가장 첫번째의 요소의 인덱스 
.count()    특정 값을 가진 요소 개수 세기
정렬
.sort()    요소를 오름차순으로 정렬
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이 변수에 저장되므로, 원하는 시퀀스 형태로 형변환해서 저장하자.

 

 

 

 

 

 

[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과

댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
글 보관함
Total
Today
Yesterday