How to Prepend a Value to a Python List?

In Python, you can prepend a value to an existing list by using the list.insert() method, for example, like so:

l = ['bar', 'baz']
l.insert(0, 'foo')

print(l) # ['foo', 'bar', 'baz']

This would do in-place modification of the list (as opposed to returning a new one) — which means that it would mutate/modify the original list.

You can shorten this by using slice assignment (list[start:stop] = [value]), for example, like so:

l = ['bar', 'baz']
l[0:0] = ['foo']

print(l) # ['foo', 'bar', 'baz']

This is the known as the extended indexing syntax — where specifying [0:0] as both, the start and stop values to the slice operator, prepends the value (e.g. ['foo']) to the list. The 0 on the left side, however, can also be omitted in this case:

l = ['bar', 'baz']
l[:0] = ['foo']

print(l) # ['foo', 'bar', 'baz']

This is similar to using the slice function (slice(start, stop)):

l = ['bar', 'baz']
l[slice(0, 0)] = ['foo']

print(l) # ['foo', 'bar', 'baz']

If prepending to a list is costing you performance-wise, then perhaps you should consider using a deque instead (as lists are not the most optimal for prepending values). In terms of time complexity, prepending to a list is an O(n) operation, as opposed to O(1) with deque.


This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.