Sobes.tech
Junior

Which is faster: lists or tuples?

sobes.tech AI

Answer from AI

Tuples are faster than lists. This is because tuples are immutable, whereas lists are mutable. Immutability allows Python to optimize the execution of operations on tuples, as their contents cannot be changed.

Main reasons for the speed difference:

  • Fixed size: Tuples have a fixed size after creation, which simplifies memory management.
  • Hashing optimization: Unlike lists, tuples can be used as dictionary keys because they are hashable (if all their elements are hashable), which requires less overhead for lookup operations.
  • Lower memory consumption: Tuples generally occupy less memory compared to lists of the same size due to the absence of the need to allocate additional memory for potential size changes.

Although the difference in speed may be insignificant for small collections, when working with large volumes of data or in time-sensitive operations, using tuples where possible can provide a noticeable advantage.

Example: speed measurements of creation and iteration

import timeit

# Time to create a list and a tuple
list_creation_time = timeit.timeit(stmt='[1, 2, 3, 4, 5]', number=1000000)
tuple_creation_time = timeit.timeit(stmt='(1, 2, 3, 4, 5)', number=1000000)

print(f"Time to create list: {list_creation_time:.6f} seconds")
print(f"Time to create tuple: {tuple_creation_time:.6f} seconds")

# Time to iterate over list and tuple
list_iteration_time = timeit.timeit(stmt='for i in [1, 2, 3, 4, 5]: pass', number=1000000)
tuple_iteration_time = timeit.timeit(stmt='for i in (1, 2, 3, 4, 5): pass', number=1000000)

print(f"Time to iterate over list: {list_iteration_time:.6f} seconds")
print(f"Time to iterate over tuple: {tuple_iteration_time:.6f} seconds")
# Note: Results may vary slightly with each run

Generally, creation and iteration times for tuples are slightly less.

Thus, for cases where the data collection does not require modifications after creation, using tuples is a more efficient option.