out = (lst[0], lst[1], lst[2])
rather than
out = tuple(lst[0:3])
When I think closer about it, it makes sense. Since the list slicing [0:3] actually has to create a new list and populate it, which you then convert into a tuple.
I don't know if this scales to very large tuples (100 entries), but certainly for tuples up 5 entries it holds true.
To test it yourself, you can use python's timeit module.
% python -m timeit -s "lst = range(50000)" "x = tuple(lst[10:15])"
1000000 loops, best of 3: 1.12 usec per loop
% python -m timeit -s "lst = range(50000)" "x = (lst[10], lst[11], lst[12], lst[13], lst[14])"
1000000 loops, best of 3: 0.862 usec per loop
That's almost a 30% improvement for a list with 5 entries.
No comments:
Post a Comment