Skip to main content
HomeTutorialsPython

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.append('Python')
my_list.append('Rocks')

# 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('Python')
my_list.append('Rocks!')
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('Python')
my_list.append('Rocks!')
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.clear()

# `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':
        break
    user_responses.append(response)

# 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.append(number)

# `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'):
            strings_starting_with_a.append(string)
    
    return strings_starting_with_a

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

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

Conclusion

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
Author
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.

Topics

Keep Learning Python!

Track

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
Related

cheat sheet

LaTeX Cheat Sheet

Learn everything you need to know about LaTeX in this convenient cheat sheet!
Richie Cotton's photo

Richie Cotton

tutorial

How to Convert a List to a String in Python

Learn how to convert a list to a string in Python in this quick tutorial.
Adel Nehme's photo

Adel Nehme

tutorial

A Comprehensive Tutorial on Optical Character Recognition (OCR) in Python With Pytesseract

Master the fundamentals of optical character recognition in OCR with PyTesseract and OpenCV.
Bex Tuychiev's photo

Bex Tuychiev

11 min

tutorial

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

tutorial

Python KeyError Exceptions and How to Fix Them

Learn key techniques such as exception handling and error prevention to handle the KeyError exception in Python effectively.
Javier Canales Luna's photo

Javier Canales Luna

6 min

code-along

Full Stack Data Engineering with Python

In this session, you'll see a full data workflow using some LIGO gravitational wave data (no physics knowledge required). You'll see how to work with HDF5 files, clean and analyze time series data, and visualize the results.
Blenda Guedes's photo

Blenda Guedes

See MoreSee More