본문 바로가기

파이썬

[Python]#11 파이썬 tuple & error 유형

Python 튜플은 목록과 유사한 데이터 구조이지만 한 가지 중요한 차이점이 있습니다. 튜플은 변경할 수 없습니다. 즉, 튜플이 생성되면 해당 값을 변경할 수 없습니다. 튜플은 종종 수정해서는 안 되는 관련 데이터 조각을 저장하는 데 사용됩니다.

예를 들어 튜플을 사용하여 위치의 위도 및 경도 좌표를 저장할 수 있습니다.
함수에서 여러 값 반환: Python의 함수는 튜플을 사용하여 여러 값을 반환할 수 있습니다.
이것은 Python 프로그래밍의 일반적인 패턴이며 함수에서 관련 값을 반환하는 데 유용할 수 있습니다.
예를 들어 직사각형의 면적과 둘레를 계산하는 함수는 두 값을 모두 포함하는 튜플을 반환할 수 있습니다.
사전의 키로: 튜플은 변경할 수 없고 해시될 수 있으므로 Python 사전의 키로 사용할 수 있습니다. 값을 특정 키 집합과 연결해야 하는 경우 유용할 수 있습니다.
목록에 대한 가벼운 대안으로: 수정할 필요가 없는 값 모음이 있는 경우 튜플을 사용하는 것이 목록을 사용하는 것보다 더 메모리 효율적일 수 있습니다. 이는 튜플이 단일 메모리 블록으로 구현되는 반면 목록은 별도의 메모리 위치에 대한 포인터 모음으로 구현되기 때문입니다.


전반적으로 튜플은 일단 생성되면 변경하면 안 되는 관련 값을 저장해야 하는 다양한 상황에서 유용한 데이터 구조가 될 수 있습니다.

 

다음은 Python 튜플의 몇 가지 예와 설명입니다.

Example 1: Simple tuple

my_tuple = (1, 2, 3)

이 튜플에는 세 개의 값이 있으며 모두 정수입니다. 목록과 마찬가지로 대괄호를 사용하여 값에 액세스할 수 있습니다.

>>> my_tuple[0]
1
>>> my_tuple[1]
2
>>> my_tuple[2]
3

튜플은 변경할 수 없으므로 값을 수정할 수 없습니다.

 

Example 2: Tuple packing and unpacking

my_tuple = 1, 2, 3

이 코드는 괄호를 사용하지 않고 세 개의 값으로 튜플을 만듭니다. 이것을 튜플 패킹이라고 합니다. 튜플을 별도의 변수로 풀 수도 있습니다.

my_tuple = (1, 2, 3)
a, b, c = my_tuple

이 코드는 튜플 압축 해제를 사용하여 값 1을 a에, 값 2를 b에, 값 3을 c에 할당합니다.

 

Example 3: Nested tuple

my_tuple = (1, (2, 3), 4)

이 튜플에는 세 개의 값이 있으며 두 번째 값 자체가 튜플입니다. 여러 대괄호를 사용하여 중첩된 값에 액세스할 수 있습니다.

>>> my_tuple[1][0]
2
>>> my_tuple[1][1]
3

Example 4: Tuple methods

my_tuple = (1, 2, 3)

튜플에는 몇 가지 유용한 메서드가 있습니다. 예를 들어 index 메서드를 사용하여 값의 인덱스를 가져올 수 있습니다.

>>> my_tuple.index(2)
1

count 메소드를 사용하여 값의 발생 횟수를 셀 수도 있습니다.

>>> my_tuple.count(2)
1

이것들은 파이썬에서 튜플을 사용할 수 있는 많은 방법의 몇 가지 예일 뿐입니다. 튜플은 불변성이 필요한 다양한 상황에서 사용할 수 있는 다목적 데이터 구조입니다.

 

Tuple 에러 유형

Example 1: 튜플 수정 시 TypeError

my_tuple = (1, 2, 3)
my_tuple[0] = 4

이 코드는 튜플이 변경 불가능하고 일단 생성되면 해당 값을 수정할 수 없기 때문에 TypeError를 발생시킵니다.

Example 2: 튜플이 아닌 객체와 튜플을 연결할 때 TypeError 발생

my_tuple = (1, 2, 3)
my_list = [4, 5, 6]
new_tuple = my_tuple + my_list

이 코드는 튜플을 목록과 연결할 수 없기 때문에 TypeError를 발생시킵니다. 대신 연결하기 전에 목록을 튜플로 변환해야 합니다.

my_tuple = (1, 2, 3)
my_list = [4, 5, 6]
new_tuple = my_tuple + tuple(my_list)

Example 3: 튜플이 아닌 객체로 튜플을 추가할 때 TypeError 발생

my_tuple = (1, 2, 3)
my_int = 4
new_tuple = my_tuple + my_int

이 코드는 정수가 있는 튜플을 추가할 수 없기 때문에 TypeError도 발생시킵니다. 대신 다음을 추가하기 전에 정수를 튜플로 변환해야 합니다.

my_tuple = (1, 2, 3)
my_int = 4
new_tuple = my_tuple + (my_int,)

Example 4:존재하지 않는 인덱스에 액세스할 때 IndexError

my_tuple = (1, 2, 3)
print(my_tuple[3])

이 코드는 튜플 my_tuple이 인덱스 0, 1, 2를 가진 세 개의 값만 가지고 있기 때문에 IndexError를 발생시킵니다. 튜플에 대한 유효한 인덱스 범위에 있지 않은 인덱스에 액세스하려고 하면 이 오류가 발생합니다.

 

이러한 일반적인 IndexError 및 TypeError 오류와 이를 방지하는 방법을 이해하면 Python에서 튜플로 작업할 때 보다 강력하고 오류 없는 코드를 작성할 수 있습니다.