Skip to main content

How to Append and Inserting Multiple Elements in Python Lists

This guide explains how to add multiple elements to a Python list, both at the end (appending) and at specific positions (inserting). We'll cover the most efficient and Pythonic methods: extend(), list slicing, and briefly discuss alternatives like itertools.chain and using loops.

The list.extend() method is the most efficient and Pythonic way to add all elements from another iterable (like a list, tuple, or set) to the end of an existing list:

a_list = ['tutorial']
a_list.extend(['reference', '.', 'com']) # Extend with a list
print(a_list) # Output: ['tutorial', 'reference', '.', 'com']

a_list = ['tutorial']
a_tuple = ('reference', '.', 'com') # Extends with any iterable
a_list.extend(a_tuple)
print(a_list) # Output: ['tutorial', 'reference', '.', 'com']
  • The extend() method modifies the original list.

Appending Multiple Elements with the Addition Operator (+)

You can use the + operator to concatenate lists, but this creates a new list object, which is less efficient than extend() (especially for large lists):

a_list = ['tutorial']
multiple_values = ['reference', '.', 'com']

a_list = a_list + multiple_values # Creates a NEW list
print(a_list) # Output: ['tutorial', 'reference', '.', 'com']
  • Using the + operator with lists creates a new list, instead of extending the original one.

Appending Multiple Elements with itertools.chain()

The itertools.chain() function provides a way to treat multiple iterables as a single sequence without creating intermediate lists. You can combine it with list() to append:

from itertools import chain
a_list = ['tutorial']
multiple_values = ['reference', '.', 'com']
a_list = list(chain(a_list, multiple_values)) # This is a good approach, but less readable than extend() in this case
print(a_list) # Output: ['tutorial', 'reference', '.', 'com']
  • itertools.chain() efficiently chains multiple iterables together, and avoids creating new list objects.
  • The list() constructor then creates the list object.

Inserting Multiple Elements at a Specific Index

To insert multiple elements at a specific position within a list, the best approach is to use list slicing. Avoid using repeated insert() calls within a loop, as this is very inefficient.

list1 = ['tutorial', 'reference']
list2 = ['.', 'com']
index = 1
list1[index:index] = list2 # Insert list2 at index 1
print(list1) # Output: ['tutorial', '.', 'com', 'reference']
  • list1[index:index] = list2: This is the key. list1[index:index] creates an empty slice at the specified index. Assigning to this empty slice inserts the elements of list2 at that position, without overwriting any existing elements. This is much more efficient than repeated calls to insert().
  • You can also combine list slicing with the + operator, but that is a less efficient approach.