튜플(tuple)은 클래스와 같이 새로운 형태를 정의할때 사용한다.
크게 복잡하지 않다면 class를 사용하지 않고 tuple을 사용하는 경우가 있다.
● 튜플 선언
def onetwo():
return 1, 2
print(onetwo())
출력 결과 (1, 2)
위의 코드에서 (1, 2) 에 해당하는 것이 tuple이다. 튜플은 리스트와 비슷하지만 크게 2가지 차이점이 있다.
첫번째는 튜플은 값을 수정할 수 없다는 것이다. 두번째는 튜플은 값을 추가하거나 기존 값을 제거할 수 없다는 것이다.
튜플은 immutable하다.
● 패킹과 언패킹
튜플이 immutable하기 때문에 활용도가 적을 것 같지만, 사실 튜플의 주 역할은 패킹과 언패킹이다.
def onetwo():
return 1, 2
a, b = onetwo()
print(a, b, a + b)
출력 결과: 1, 2, 3
위 출력 결과로 알 수 있듯이 a변수에는 1이 b변수에는 2가 할당된다. 이것을 튜플 언패킹이라고 한다. 이것을 활용하여 하나의 함수로 여러가지 반환 값을 기록하고 변수에 할당할 수 있다.
반대로 패킹은 여러개의 값을 하나의 변수에 저장할 수 있다.
num = [1, 2, 3, 4, 5] 리스트를 활용하여 num 리스트에 1,2,3,4,5 를 저장한 코드
num = 1, 2, 3, 4, 5 튜플을 활용하여 num 튜플 변수 한개에 1,2,3,4,5를 패킹한 코드
● 클래스와 비교
클래스 코드
class identity:
def __init__(self, name, sn, address):
self.name = name
self.sn = sn
self.address = address
id1 = identity("홍길동", "000101-3000000","서울")
동일한 기능을 하는 튜플 코드
id1 = ("홍길동", "000101-3000000","서울")
위 클래스 코드를 tuple로 간단하게 저장할 수 있다.
하지만 튜플의 단점으로는 각 값이 의미하는 것을 알기 어려워 가독성이 떨어지기 때문에 언패킹시 적절한 이름의 변수를 붙여 사용해야한다.
id1 = ("홍길동", "000101-3000000","서울")
name, sn, address = id
print(name, sn, address) 출력 결과: 홍길동 000101-3000000 서울
● 튜플의 기본 값과 값 변경
튜플은 클래스와 다르게 기본 값 개념이 없다. 값이 있지 않다면 적절한 값으로 초기화 하며 생성해야한다.
id1 = ("미입력", " 미입력"," 미입력 ") 출력 결과 : 미입력 미입력 미입력
튜플은 기본적으로 값을 변경할 수 없기 때문에 값 변경시 다시 새로운 튜플을 동일한 이름으로 선언하여 변경해야한다.
id1 = ("미입력", " 미입력"," 미입력 ")
name, sn, address = id1
print(name, sn, address) 출력 결과 : 미입력 미입력 미입력
id1 = (name, sn, "서울")
name, sn, address = id1
print(name, sn, address) 출력 결과 : 미입력 미입력 서울
id1 = "홍길동", "000101-3000000","서울"
_, _, address = id1
print(address)
address 값만을 필요로 할때 위처럼 코드를 작성한다. 언패킹시 필요 없는 값들의 부분에 변수명을 _를 주면 된다.
'Python' 카테고리의 다른 글
| 파이썬 두 수의 최소공배수 (0) | 2024.01.23 |
|---|---|
| Python 클래스와 객체 (0) | 2024.01.20 |
| Python 정렬 (0) | 2024.01.18 |
| Python 재귀함수 (0) | 2024.01.16 |
| Python 전역변수 (0) | 2024.01.16 |