Python List insert() Method
list.insert() adds an item to a list at a specific position.
This method is useful when the position matters. For example, you may want to add a new value at the beginning of a list, in the middle, or just before the last item.
Use insert() when you need to place an item at a chosen index. If you only want to add an item at the end, see the Python list append() method.
numbers = [1, 2, 4]
numbers.insert(2, 3)
print(numbers)
# [1, 2, 3, 4]
Use list.insert(index, value) to add an item at a specific position.
What list.insert() does #
list.insert():
- Adds one item into a list at a chosen position
- Shifts existing items to the right
- Changes the original list in place
- Returns
None
That last point is important. insert() does not create a new list.
Syntax #
my_list.insert(index, item)
indexis the position where the new item should goitemis the value to add- The first list position is index
0
Example:
letters = ["a", "c"]
letters.insert(1, "b")
print(letters)
Output:
['a', 'b', 'c']
Here, "b" is inserted at index 1, so it appears between "a" and "c".
Basic example #
Here is a simple before-and-after example:
colors = ["red", "blue", "green"]
print("Before:", colors)
colors.insert(1, "yellow")
print("After: ", colors)
Output:
Before: ['red', 'blue', 'green']
After: ['red', 'yellow', 'blue', 'green']
The new value appears at index 1. The existing items from that position onward move one place to the right.
How the index works #
The index in insert(index, item) controls where the new item is placed.
Insert at the beginning #
Use index 0 to add an item at the start of the list.
nums = [2, 3, 4]
nums.insert(0, 1)
print(nums)
Output:
[1, 2, 3, 4]
Insert in the middle #
A middle index inserts between existing items.
nums = [1, 2, 4]
nums.insert(2, 3)
print(nums)
Output:
[1, 2, 3, 4]
Insert past the end #
If the index is greater than the list length, Python adds the item at the end.
nums = [1, 2, 3]
nums.insert(10, 4)
print(nums)
Output:
[1, 2, 3, 4]
Use a negative index #
Negative indexes count from the end of the list. insert() places the item before that position.
letters = ["a", "b", "d"]
letters.insert(-1, "c")
print(letters)
Output:
['a', 'b', 'c', 'd']
If you are still getting comfortable with list positions, the Python lists beginner guide can help.
insert() vs append() #
These methods both add items to a list, but they do different jobs.
Use insert() when: #
- You want to add an item at a specific position
- The order of the list matters
Use append() when: #
- You want to add an item only at the end
- You do not need to choose a position
Example:
items = ["apple", "orange"]
items.insert(1, "banana")
print(items)
items.append("grape")
print(items)
Output:
['apple', 'banana', 'orange']
['apple', 'banana', 'orange', 'grape']
For the full method details, see the Python list append() method.
If your goal is the task itself rather than the method details, see how to add an item to a list in Python.
Common beginner mistakes #
Here are some common problems beginners run into with insert().
Assigning the result of insert() #
This is a very common mistake:
numbers = [1, 2, 3]
result = numbers.insert(1, 99)
print(result)
print(numbers)
Output:
None
[1, 99, 2, 3]
insert() changes the original list and returns None.
Wrong:
new_list = numbers.insert(1, 99)
Right:
numbers.insert(1, 99)
Passing arguments in the wrong order #
The correct order is:
my_list.insert(index, item)
Not:
my_list.insert(item, index)
Example:
letters = ["a", "c"]
letters.insert(1, "b")
print(letters)
Output:
['a', 'b', 'c']
Expecting insert() to replace an item #
insert() does not replace an existing value. It shifts items to the right.
numbers = [1, 2, 3]
numbers.insert(1, 99)
print(numbers)
Output:
[1, 99, 2, 3]
If you want to replace a value instead, use assignment:
numbers = [1, 2, 3]
numbers[1] = 99
print(numbers)
Output:
[1, 99, 3]
Trying to insert multiple items at once #
insert() adds one item each time.
This inserts a single list as one item:
numbers = [1, 4]
numbers.insert(1, [2, 3])
print(numbers)
Output:
[1, [2, 3], 4]
If you want to add many items, see the Python list extend() method.
Helpful checks while debugging #
If insert() is not doing what you expect, these can help:
print(my_list)
print(len(my_list))
print(my_list.insert.__doc__)
help(list.insert)
type(my_list)
These checks can help you confirm:
- What is currently in the list
- How long the list is
- That you are working with a real list
- How Python describes the method
When to use insert() #
Use insert() when position matters.
Common cases:
- Ordered menus
- Rankings or score lists
- Step-by-step manual list building
- Inserting a value at the beginning or middle
You usually do not need insert() when adding only to the end of a list. In that case, append() is simpler.
If you need a refresher on making lists before using methods on them, see creating a list in Python.
FAQ #
Does list.insert() return a new list? #
No. It changes the existing list and returns None.
What happens if the index is bigger than the list length? #
Python adds the item at the end of the list.
Can list.insert() add multiple items? #
It adds one item each time. To add many items, use extend() or slicing.
What is the difference between insert() and append()? #
insert() adds at a chosen position. append() adds only at the end.