파이썬에서 불변(immutable) 벡터를 표현하려면 튜플(tuple)을 사용하는 것이 가장 간단하고 효율적인 방법입니다. 튜플은 리스트처럼 순서를 유지하는 데이터 구조이지만, 한 번 생성되면 내용을 변경할 수 없다는 특징이 있습니다. 또한 리스트에 비해 연산 속도가 빠르고 메모리 사용 측면에서도 유리하기 때문에, 좌표나 벡터처럼 값이 바뀌지 않아야 하는 데이터를 다룰 때 특히 적합합니다.
기본 예제
아래와 같이 괄호를 사용해 벡터를 튜플로 정의할 수 있습니다.
myVec = (10, 15, 21) myVec[0] = 10
이 코드를 실행하면 오류가 발생합니다. 튜플은 불변(immutable) 자료형이기 때문에 생성 이후 요소를 수정할 수 없으며, 인덱스를 통해 값을 할당하려 하면 다음과 같은 TypeError가 발생합니다.
TypeError: 'tuple' object does not support item assignment
즉, 실수로 벡터의 값이 변경되는 것을 언어 차원에서 방지할 수 있으므로, 데이터의 무결성을 보장해야 하는 상황에서 튜플은 안전한 선택입니다.
심화: namedtuple로 가독성 높이기
벡터의 각 성분에 이름을 붙여 더 읽기 쉽게 만들고 싶다면 collections.namedtuple을 활용할 수 있습니다. namedtuple 역시 불변이면서도 인덱스 대신 이름으로 값에 접근할 수 있어 코드의 가독성이 크게 향상됩니다.
from collections import namedtuple
Vector = namedtuple('Vector', ['x', 'y', 'z'])
v = Vector(10, 15, 21)
print(v.x) # 10
print(v.y) # 15정리
파이썬에서 불변 벡터가 필요하다면 기본적으로 튜플을 사용하고, 성분에 의미 있는 이름을 부여하고 싶다면 namedtuple을 사용하는 것이 좋습니다. 두 방식 모두 불변성을 보장하여 코드의 안정성과 신뢰성을 높여 줍니다.