IT

[코딩온] 신재생에너지 IoT 개발자 입문_ 파이썬4

혈중당부족 2025. 11. 25. 17:37

쭉쭉 복습 기록하여 밀어보기로 했다. 

 

6. tuple

 

tuple (튜플)
시퀀스 타입, 순서가 존재하는 여러 데이터의 모음
불변 (immutable) 자료형

 

순서가 있기에 인덱스가 존재하고, 동일한 값을 여러개 가질 수 있지만. 만들면 요소를 수정, 삭제할 수 없다. 

 

생성 방식은 소괄호 () 와 쉼표, 구분이 있는데 명확성을 위해 ()로 튜플을 생성한다. 

my_tuple = (1,2,3,4)
print(my_tuple) #(1,2,3,4)로 나옴
print(type(my_tuple)) #<class 'tuple'>

my_tuple2 = 5,6,7,8
print(my_tuple2)

 

 

단일 요소의 튜플 만들 때 쉼표를 무조건 넣어줘야 인지된다.

single_el_tuple = (100,) < , 인식

 

my_tuple2 = tuple()
print(my_tuple2
my_tuple2 =tuple('coodingon')
print(my_tuple2) #단어 한 글자를 쪼개서 요소로 만들어진 게 나옴

 

언패킹 (Unpacking)

시퀸스의 저장된 여러 값을 여러 변수에 나눠서 저장한 것

왼쪽에 변수 나열, 오른쪽에 시퀀스 자료형

개수 일치 하면 각각 대응되는 값이 할당되고 맞지 않으면 Error 발생한다. 

튜플, 리스트, 문자열... 가능하다.

 

apple, bananan, kiwi = ("apple", "banana", "kiwi")
print(apple, bananan, kiwi)
 
=> apple banana kiwi 로 나온단 뜻.
 
리스트 튜플 비교

 

 
 

순서가 있는 시퀀스 자료형이기 때문에 인덱싱 지정해 출력 가능하다.

그렇기에 튜플 수정 하는 법: 그냥 새로 만들어서 슬라이싱해 연산하여 만든다.
 
my_tuple = (10,20,30)
print("원래 튜플" , my_tuple)
#원래 튜플 (10, 20, 30)
my_tuple2 = (100,) + my_tuple[1:]
print("새로운 튜플", my_tuple2)
#새로운 튜플 (100, 20, 30)

 

튜플도 연산이 있는데 주로 연결(+) 반복(*) 으로 리스트때 쓴 연산과 유사하다.

 

 

메서드에 관해...

튜플은 불변 시퀀스 자료형이라서 리스트와 다르게 쓸 수 있는 게 적다.

튜플을 변경시키지 않는 파이썬 내장 함수만 사용 가능.

 

튜플 자체 건들지 않고 요소만 출력할 때 변경되는 메서드는 된단 뜻이다. list파트와 번갈아 보며 파악해야 겠다.

 

 

 

그럼 튜블의 불변성은 어디에 유용한가.

 

 

튜플은 위에도 요소를 추가, 수정 , 삭제가 안된다고 했는데. 대략 써본다면.

my_tuple[0] = 100
#'tuple' object does not support item assignment. 튜플은 지원하지 않는다 뜻
del my_tuple[1]
#'tuple' object doesn't support item deletion 타입 에러 나온다.
#튜플 자체는 삭제가 가능하다. but 원소 삭제는 불가함.
del my_tuple
print(my_tuple)
#name 'my_tuple' is not defined = 찾을 수 없다 = 삭제 됨
 
이하 실습 내용들. 
#실습+설명 
손상된 정보 복원이란 형태로 한 문제였다.
 
바뀐 정보를 주고 해당 요소를 바꾸라는데, 처음에 이해 못하다 나중에 풀어보니
해당 정보를 가지고 새로운 튜플로 만들라는 뜻이었다.
 
01 user = ("minji", 25, "Seoul")을 ‘eunji’로 수정한 결과를 restored_user에 저장하고 출력
user = ("minji", 25, "Seoul")
restored_use = ("eunji",)+ user[1:]
print("수정된 정보", restored_use)
 
 
새로운 튜플로 해당 정보를 각각 처리하도록 변수 처리라고 하는데 언패킹하단 뜻이다.

02 튜플 restored_user를 언패킹하여 name, age, city 변수에 저장
name, age, city = restored_use
print(name, age, city)
 
여기서 3번은 생략되었다. (단계를 넘기자고...) 

04 현재 DB보고 "minji" 라는 이름이 몇번 등장하는지 출력
"soojin"이 처음 등장하는 위치(인덱스)를 출력
users = ("minji", "eunji", "soojin", "minji", "minji")
print(users.count("minji"))
print(users.index("soojin"))

05 보고서 출력용으로 고객이름을 가나다순으로 정렬
튜플은 변경불가 이므로 원본은 유지되어야 하며, 정렬 결과는 리스트 형태로 출력
users 튜플을 정렬한 결과를 sorted_users에 저장하고 출력
sorted_users = list(users)
sorted_users.sort()
print(sorted_users)

print("복원 된 고객 정보:",)
 
 
이런 식으로 튜플 챕터를 백업 했다. 다시 읽고 문제를 읽어보니 이해가 가면서도 왜 직접 쓰면 안 써지는 지 모르겠다. 
배포한 강의 자료도 같이 보면서 쓰고 있는데 낯선 단어가 나오면 이게 뭘까?하고 생각이 길어지니 놓치기도 하고 
무작정 받아적고 써먹는다 해도 기억에 안 남으니 나 스스로가 아쉬운 거 같다. 일단 여기까지!