Of course! The list.append() method is one of the most fundamental and frequently used tools in Python. Let's break it down thoroughly.

What is list.append()?
The append() method adds a single item to the end of an existing list. It modifies the list "in-place," which means it changes the original list directly and does not return a new list.
The Basic Syntax
list_name.append(item)
list_name: The name of the list you want to modify.item: The single element you want to add to the end of the list. This can be of any data type: a number, a string, another list, a dictionary, etc.
Key Characteristics
- Modifies the List In-Place:
append()changes the original list. It does not create a new list. This is a common point of confusion for beginners. - Returns
None: If you try to assign the result ofmy_list.append(...)to a variable, that variable will beNone. - Adds Only One Item: You can only add one item at a time using
append(). If you want to add multiple items, you need to callappend()for each one or use a different method likeextend().
Code Examples
Example 1: Appending Simple Data Types
Let's add numbers and strings to a list.
# Start with an empty list
fruits = []
print(f"Initial list: {fruits}")
# Append a string
fruits.append("apple")
print(f"After appending 'apple': {fruits}")
# Append another string
fruits.append("banana")
print(f"After appending 'banana': {fruits}")
# Append a number
fruits.append(123)
print(f"After appending the number 123: {fruits}")
Output:
Initial list: []
After appending 'apple': ['apple']
After appending 'banana': ['apple', 'banana']
After appending the number 123: ['apple', 'banana', 123]
Example 2: The "In-Place" Behavior and None Return Value
This example clearly shows that append() modifies the original list and returns None.

my_numbers = [1, 2, 3]
print(f"Original list: {my_numbers}")
# A common mistake for beginners is to re-assign the list
new_list = my_numbers.append(4)
print(f"my_numbers after append: {my_numbers}") # The original list is modified
print(f"Value returned by append(): {new_list}") # The return value is None
Output:
Original list: [1, 2, 3]
my_numbers after append: [1, 2, 3, 4]
Value returned by append(): None
Common Pitfalls and How to Avoid Them
Pitfall 1: Appending a List vs. Extending a List
This is the most frequent confusion. When you append() a list, the entire list becomes a single element (a nested list). When you extend() a list, you add each item from the second list to the end of the first.
append() adds the list as one item:
list_a = [1, 2, 3] list_b = [4, 5] list_a.append(list_b) print(list_a)
Output:

[1, 2, 3, [4, 5]] # Notice the nested list
extend() adds the items from the list individually:
list_a = [1, 2, 3] list_b = [4, 5] list_a.extend(list_b) print(list_a)
Output:
[1, 2, 3, 4, 5] # The lists are merged
Pitfall 2: Appending in a Loop
A very common task is to build a list by iterating over something. You must initialize the list before the loop and then append() inside the loop.
Correct Way:
# Initialize an empty list first
squares = []
# Loop through numbers 0 to 4
for i in range(5):
# Append the square of the current number to the list
squares.append(i ** 2)
print(squares)
Output:
[0, 1, 4, 9, 16]
Incorrect Way (A common error):
# DO NOT DO THIS
squares = []
for i in range(5):
squares = squares + [i ** 2] # This creates a new list in every iteration!
print(squares)
While this works, it's highly inefficient because it creates a new list in memory and copies all elements over in every single loop iteration. append() is much faster and more memory-efficient for this purpose.
append() vs. Other List Methods
| Method | What it Does | Example |
|---|---|---|
append(item) |
Adds a single item to the end of the list. Modifies in-place. | my_list.append(10) |
extend(iterable) |
Adds all items from an iterable (e.g., another list, tuple) to the end of the list. Modifies in-place. | my_list.extend([11, 12, 13]) |
insert(index, item) |
Inserts a single item at a specific position in the list. Modifies in-place. | my_list.insert(0, 99) # Inserts at the beginning |
| operator | Concatenates two lists to create a new list. The original lists are not changed. | new_list = my_list + [14, 15] |
Performance of append()
append() is very fast. Adding an item to the end of a list is an O(1) operation on average. This means the time it takes to add an item does not increase as the list gets larger. This is because Python lists are dynamic arrays, and they have extra space allocated to accommodate new elements without needing to resize the underlying memory every time.
In summary, list.append() is your go-to method for:
- Building a list item by item.
- Adding a new element to the end of an existing list.
- Efficiently growing a list within a loop.
