Skip to main content

A Comprehensive Guide to Python Empty Lists

Learn key list operations and use cases for empty lists in Python.
Feb 2024  · 5 min read

Python, with its versatile data structures, stands out as a powerful tool for developers and data scientists. Among these structures, lists hold a special place due to their dynamic nature and ease of use. This article delves into the concept of empty lists in Python, exploring their creation, common use cases, and operations, focusing on providing clear, step-by-step explanations and practical examples.

If you’re looking for more info on the subject, check out our full Python Lists tutorial.

The Short Answer; How to Create an Empty List in Python

For those in a hurry, creating an empty list in Python is as straightforward as using square brackets []. This concise method is not only easy to remember but also efficient in initializing a list for further operations. Here’s an example of creating an empty list called my_list and appending (covered in more depth later on) the words ‘Python’ and ‘Rocks’ to it.

# Create an empty list called my_list
my_list = []
# Append the words 'Python' and 'Rocks' to it

# my_list is now ['Python', 'Rocks']

Creating Python Empty Lists: Two Methods to Use

While the brief section above introduced the use of square brackets [] as a quick method to initialize an empty list, it's worth exploring this technique in greater detail to appreciate its elegance and efficiency. In addition to this, Python also offers a more explicit alternative that aligns with certain coding styles and clarity requirements.

Method 1: Creating empty lists using []

The use of square brackets [] to create an empty list is a testament to Python's design philosophy, emphasizing simplicity and readability. It represents a clean, intuitive starting point for list operations. Here’s a reminder of how to initialize an empty list using []:

# Initializing an empty list with square brackets
my_empty_list = []

Method 2: Using Python’s built-in list() function

Alternatively, Python provides a built-in function list() that, when called without any arguments, returns an empty list. This method is equally effective, though slightly more verbose. It can be particularly useful when the code's readability and explicitness are prioritized. Here’s an example of it in action:

# Create an empty list using the list() function
my_empty_list = list()

Common Operations on Empty Lists

Understanding how to manipulate empty lists is crucial for effective Python programming. Here are some key operations you will definitely need to use as you work with empty lists.

Appending Elements to an Empty List Using .append()

An empty list is not very useful if you can’t add elements to it. To add an element to the end of a list, simply use the .append() method. Here, for example, we initialize an empty list and add the words ’Python’, ’Rocks!’, and ‘It’s easy to learn!’ to the list my_list.

# Initialize an empty list
my_list = []

# Append elements
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

Inserting an element into a specific place in a list using .insert()

A drawback of .append() is that it only adds elements at the end of a list — this means that we have no control over where exactly to insert a new element when using .append(). The .insert() method, on the other hand, allows us to do exactly that. Here we pick up the example from the previous section and insert ’Truly’ between ’Python’ and ’Rocks!’. Note that Python uses zero-based indexing, which means that the index of the first element of the list is 0. Check out the example for more details:

# Initialize an empty list
my_list = []

# Append elements
my_list.append('It’s easy to learn!')

# `my_list` is now ['Python', 'Rocks!', 'It’s easy to learn!']

# Showcase zero-based indexing in Python
my_list[0] # Returns 'Python'
my_list[1] # Returns 'Rocks'
my_list[2] # Returns 'It's easy to learn!'

# Use the .insert() method to insert ’Truly’ between ’Python’ and ’Rocks!’
my_list.insert(1, 'Truly')
# `my_list` is now ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

Adding multiple elements using .extend()

While the .append() and .insert() methods are perfect for adding individual elements to a list, .extend() allows us to add multiple elements at once. This can be particularly useful when you want to merge two lists or add a collection of elements without iterating through them. Building on the previous example, let's add a few more descriptive words to our my_list to make our sentence more interesting:

# Reminder that `my_list` is ['Python', 'Truly', 'Rocks', 'It’s easy to learn!']

# Extend my_list with ['and', 'fun', 'to', 'use!']
my_list.extend(['and', 'fun', 'to', 'use!'])

# `my_list` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!']

In this example, .extend() takes an iterable (like a list, set, or tuple) and appends each of its elements to the end of my_list, expanding our sentence further.

Concatenating lists using +

Another way to add elements from one list to another is by using the + operator, which concatenates two lists. This method is straightforward and does not modify the original lists but rather creates a new list. Let's concatenate a new list with our existing my_list:

# Define a new list to concatenate
additional_words = ['Python is also', 'very versatile.']

# Concatenate lists using +
complete_sentence = my_list + additional_words

# `complete_sentence` now contains the elements of both lists
# `complete_sentence` is now ['Python', 'Truly', 'Rocks!', 'It’s easy to learn!', 'and', 'fun', 'to', 'use!', 'Python is also', 'very versatile.']

In this example, .extend() takes an iterable (like a list, set, or tuple) and appends each of its elements to the end of my_list, expanding our sentence further.

Copying lists using .copy()

Copying a list is essential when you want to retain the original list before modifying its copy. The .copy() method creates a shallow copy of the list, meaning it duplicates the list itself but not the deep objects within it. Let's make a copy of my_list:

# Make a copy of `my_list`
my_list_copy = my_list.copy()

# Verify that `my_list_copy` is a separate object
assert my_list_copy is not my_list  # This will pass, confirming they are different objects

Using .copy() ensures that changes made to the copied list do not affect the original list.

Clearing the list using .clear()

Sometimes, you might need to reset a list to its empty state, removing all its elements. The .clear() method allows you to do just that, modifying the list in place. Let's clear my_list:

# Clear all elements from `my_list`

# `my_list` is now an empty list again
assert len(my_list) == 0  # This will pass, confirming the list is empty

The .clear() method is particularly useful in scenarios where you need to reuse or reset the list without creating a new list object.

Common Use-Cases for Initializing Python Empty Lists

Empty lists serve as necessary elements in various programming scenarios. Understanding their applications can significantly enhance coding efficiency and problem-solving skills.

Storing data dynamically in an empty list

In situations where the amount or type of data is unpredictable, empty lists emerge as flexible containers for dynamically accumulating information. Consider a program that reads user input until a specific condition is met. Here, we don’t know the number of user inputs we may get, and by using the .append() method, we are able to add elements to the list user_response dynamically.

# Initialize an empty list to store user input
user_responses = []

# Collect user input in a loop
while True:
    response = input("Enter your response (or type 'exit' to finish): ")
    if response.lower() == 'exit':

# User responses are now stored in `user_responses`

Storing results in an empty list from a For loop

When working with loops, empty lists prove invaluable for compiling results generated in each iteration. Here's an example where we store even numbers as we loop through the range from 0 to 20.

# Initialize an empty list to store even numbers
even_numbers = []

# Loop through a range of numbers and store even ones
for number in range(21):  # Upper limit 21 to include 20 in the range
    if number % 2 == 0: # if remainder when divided by 2 =0, store it in empty list

# `even_numbers` now contains even numbers from 0 to 20

Storing function outputs into empty lists

When designing functions with variable return values, initializing and returning an empty list can elegantly handle scenarios with no results. Here, for example, we loop over a list of words and store the words that start with ’A’ into an empty list.

def find_strings_starting_with_a(strings):
    # Initialize an empty list to store strings that start with 'A'
    strings_starting_with_a = []
    # Iterate over the input list and append strings that start with 'A' to `strings_starting_with_a`
    for string in strings:
        if string.startswith('A'):
    return strings_starting_with_a

# Example usage
result = find_strings_starting_with_a(['Assert', 'Import', 'Function', 'Array', 'Arguments'])

# 'result' will contain ['Assert', 'Array', 'Arguments']


In summary, mastering empty lists and their operations is crucial in Python programming, allowing for versatile data manipulation. Through appending, inserting, extending, concatenating, copying, and clearing, we've seen how to effectively manage lists in practical scenarios. These fundamental skills form the backbone of Python coding, enabling you to tackle more complex problems with ease and creativity.

You can learn more about Python lists and many other useful functions in our Python Fundamentals skill track - get started today!

Photo of Adel Nehme
Adel Nehme

Adel is a Data Science educator, speaker, and Evangelist at DataCamp where he has released various courses and live training on data analysis, machine learning, and data engineering. He is passionate about spreading data skills and data literacy throughout organizations and the intersection of technology and society. He has an MSc in Data Science and Business Analytics. In his free time, you can find him hanging out with his cat Louis.


Keep Learning Python!


Python Fundamentals

15hrs hr
Grow your programmer skills. Discover how to manipulate dictionaries and DataFrames, visualize real-world data, and write your own Python functions.
See DetailsRight Arrow
Start Course
See MoreRight Arrow


Python Data Classes: A Comprehensive Tutorial

A beginner-friendly tutorial on Python data classes and how to use them in practice
Bex Tuychiev's photo

Bex Tuychiev

9 min


Python Linked Lists: Tutorial With Examples

Learn everything you need to know about linked lists: when to use them, their types, and implementation in Python.
Natassha Selvaraj's photo

Natassha Selvaraj

9 min


Python List Size: 8 Different Methods for Finding the Length of a List in Python

Compare between 8 different methods for finding the length of a list in Python.
Adel Nehme's photo

Adel Nehme

8 min


Python List Functions & Methods Tutorial and Examples

Learn about Python List functions and methods. Follow code examples for list() and other Python functions and methods now!
Abid Ali Awan's photo

Abid Ali Awan

7 min


18 Most Common Python List Questions

Discover how to create a list in Python, select list elements, the difference between append() and extend(), why to use NumPy and much more.
Karlijn Willems's photo

Karlijn Willems

34 min


Encapsulation in Python Object-Oriented Programming: A Comprehensive Guide

Learn the fundamentals of implementing encapsulation in Python object-oriented programming.
Bex Tuychiev's photo

Bex Tuychiev

11 min

See MoreSee More