How can I represent immutable vectors in Python?

An immutable vector in Python is a fixed, ordered collection of numerical values that cannot be changed after creation. These are implemented using tuples or libraries like NumPy with write protection, ensuring data consistency and preventing modifications during computations.

Methods to Represent Immutable Vectors

Python provides several approaches to create immutable vectors ?

  • Using Tuples

  • Using NumPy Arrays with Write Protection

  • Using Named Tuples

Using Tuples

Tuples are inherently immutable in Python, making them ideal for representing fixed vectors ?

# Creating an immutable vector using tuple
vector = (3.0, 4.0, 5.0)
print("Vector:", vector)
print("Type:", type(vector))

# Accessing elements
print("First element:", vector[0])
print("Vector length:", len(vector))
Vector: (3.0, 4.0, 5.0)
Type: <class 'tuple'>
First element: 3.0
Vector length: 3

Attempting to modify a tuple raises an error ?

vector = (3.0, 4.0, 5.0)

try:
    vector[0] = 10.0  # This will raise an error
except TypeError as e:
    print("Error:", e)
Error: 'tuple' object does not support item assignment

Using NumPy Arrays with Write Protection

NumPy arrays can be made immutable by setting the writeable flag to False ?

import numpy as np

# Create and protect NumPy array
vector = np.array([4.0, 5.0, 6.0])
vector.flags.writeable = False

print("Vector:", vector)
print("Is writeable:", vector.flags.writeable)
print("Data type:", vector.dtype)
Vector: [4. 5. 6.]
Is writeable: False
Data type: float64

Attempting to modify the protected array raises an error ?

import numpy as np

vector = np.array([4.0, 5.0, 6.0])
vector.flags.writeable = False

try:
    vector[0] = 10.0  # This will raise an error
except ValueError as e:
    print("Error:", e)
Error: assignment destination is read-only

Using Named Tuples

Named tuples provide immutable vectors with named fields for better readability ?

from collections import namedtuple

# Define a 3D vector structure
Vector3D = namedtuple('Vector3D', ['x', 'y', 'z'])

# Create immutable vector
vector = Vector3D(3.0, 4.0, 5.0)
print("Vector:", vector)
print("X component:", vector.x)
print("Y component:", vector.y)
print("Z component:", vector.z)
Vector: Vector3D(x=3.0, y=4.0, z=5.0)
X component: 3.0
Y component: 4.0
Z component: 5.0

Comparison of Methods

Method Memory Efficient Mathematical Operations Named Access
Tuple Yes Limited No
NumPy Array Yes Extensive No
Named Tuple Yes Limited Yes

Conclusion

Use tuples for simple immutable vectors, NumPy arrays with write protection for mathematical computations, and named tuples when you need readable field access. Each method ensures data integrity by preventing modifications after creation.

Updated on: 2026-03-24T20:22:25+05:30

431 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements