Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
append() and extend() in Python
The append() and extend() methods both add elements to a Python list, but they behave differently. append() adds its argument as a single element (even if it's a list), while extend() adds each element of an iterable individually.
append()
Adds the argument as one element to the end of the list. List length increases by exactly 1, regardless of the argument type.
days = ['Mon', 'Tue', 'Wed']
print("Original:", days)
# Append a single element
days.append('Thu')
print("After append('Thu'):", days)
# Append a list ? added as a nested list
days.append(['Fri', 'Sat'])
print("After append(['Fri','Sat']):", days)
print("Length:", len(days))
Original: ['Mon', 'Tue', 'Wed']
After append('Thu'): ['Mon', 'Tue', 'Wed', 'Thu']
After append(['Fri','Sat']): ['Mon', 'Tue', 'Wed', 'Thu', ['Fri', 'Sat']]
Length: 5
Notice that ['Fri', 'Sat'] is added as a single nested list at index 4, not as two separate elements.
extend()
Iterates over the argument and adds each element individually to the list. List length increases by the number of elements in the iterable.
days = ['Mon', 'Tue', 'Wed']
print("Original:", days)
# Extend with a list ? each element added separately
days.extend(['Thu', 'Fri'])
print("After extend(['Thu','Fri']):", days)
print("Length:", len(days))
Original: ['Mon', 'Tue', 'Wed'] After extend(['Thu','Fri']): ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Length: 5
String Behavior
Be careful when passing a string − extend() treats it as an iterable of characters ?
days = ['Mon', 'Tue']
# append adds string as one element
days.append("Wed")
print("append('Wed'):", days)
# extend iterates over characters
days.extend("Thu")
print("extend('Thu'):", days)
append('Wed'): ['Mon', 'Tue', 'Wed']
extend('Thu'): ['Mon', 'Tue', 'Wed', 'T', 'h', 'u']
extend("Thu") splits the string into individual characters 'T', 'h', 'u'. To add a string as a single element, always use append().
Comparison
| Feature | append() | extend() |
|---|---|---|
| Argument | Any single object | Any iterable |
| List as argument | Adds as nested list | Adds each element individually |
| String as argument | Adds as one element | Adds each character separately |
| Length increase | Always +1 | +N (number of items in iterable) |
| Equivalent to | a[len(a):] = [x] |
a[len(a):] = iterable |
Conclusion
Use append() to add a single item (including a list as a nested element). Use extend() to merge another list's elements into the current list individually. Be cautious with extend() on strings − it splits them into characters.
