Justus Perlwitz

Tuples vs Lists in Python 3

Creating tuples from generator expression is surprisingly fast.

Code

from timeit import timeit

setup = 'a = (i for i in range(100))'
print("Setup: {}".format(setup))

tuple_code = 'tuple(a)'
list_code = 'list(a)'
print("Tuple code: {}".format(tuple_code))
print("List code: {}".format(list_code))

tuple_time = timeit('tuple(a)', setup)
list_time = timeit('list(a)', setup)
print("Tuple creation: {} seconds".format(tuple_time))
print("List creation: {} seconds".format(list_time))

print(
    "Tuple creation was {:.2f} times faster".format(
        float(list_time) / tuple_time, 2
    )
)

Output

Setup: a = (i for i in range(100))
Tuple code: tuple(a)
List code: list(a)
Tuple creation: 0.33144659000390675 seconds
List creation: 0.6380892739980482 seconds
Tuple creation was 1.93 times faster

Speed up by a factor of 2!

Date created:
01 Nov 2015

You are more than welcome to share your thoughts via email