Back to blog

How to Check if a List is Empty in Python: The Pythonic Way

Checking whether a list contains elements is a common task in Python programming. You might need to verify a list before running a loop, extracting indices, or processing database outputs.

While there are multiple ways to write this check, Python has a preferred approach known as the "Pythonic" way.

In this guide, we will compare three methods to check if a list is empty, analyze PEP 8 styling guidelines, and implement safety checks for variables that might be None.

Method 1: Using Implicit Boolean Value (Recommended)

In Python, all built-in collections (lists, dictionaries, tuples, sets, and strings) have an implicit boolean value. An empty collection evaluates to False, while a collection containing at least one item evaluates to True.

To check if a list is empty, evaluate it directly within an if statement using the not operator:

# The Pythonic Way
my_list = []

if not my_list:
    print("The list is empty")

Why This Follows PEP 8 Standards

Python's official style guide, PEP 8, explicitly recommends this approach under the "Programming Recommendations" section:

"For sequences, (strings, lists, tuples), use the fact that empty sequences are false."

It is considered the most readable and clean style.

Method 2: Checking the Length (len())

Another common approach is checking if the length of the list is equal to 0 using the built-in len() function:

my_list = []

if len(my_list) == 0:
    print("The list is empty")

While functional, this approach is less concise and requires an extra function call to query the size, which is redundant when you only care about presence.

Method 3: Comparing to an Empty List Literal ([])

You can compare your list directly against an empty list literal using the equality operator:

my_list = []

if my_list == []:
    print("The list is empty")

Avoid this method. It is inefficient because Python must instantiate a new empty list object [] in memory to perform the comparison. It also reduces readability.

Safety Check: Handling None Variables

A frequent source of crashes in Python occurs when a variable expected to hold a list is actually None (for example, when a database query fails or a function parameter defaults to None).

If you check len(my_list) == 0 on a variable that is None, Python raises an error:

# Raises TypeError: object of type 'NoneType' has no len()
my_list = None
if len(my_list) == 0:
    pass

Using the implicit boolean check if not my_list: is safer because it evaluates None as False without crashing. However, if you need to distinguish between an actual empty list and a None state, write an explicit type verification:

my_list = None

# Verify the object exists before evaluating empty states
if my_list is not None and not my_list:
    print("The variable is a list, and it is empty")
elif my_list is None:
    print("The variable is None")

Conclusion

Checking list vacancy in Python is most efficiently managed using built-in truthiness evaluation. Implement the PEP 8 recommended if not my_list: syntax for clean, Pythonic verification, avoid comparing variables directly to empty brackets list literals [], and deploy explicit is not None guard checks when handling inputs that could be missing.