Python Remove Empty String from List[3 methods Explained] - Coeanrats - Community of AI Engineers and Enthusiasts

Python Remove Empty String from List[3 methods Explained]


In this tutorial, we will explore various methods to remove empty strings from a list in Python. Handling empty strings is essential to avoid errors in data processing.

Whether you are a beginner, medium-level Python user, or advanced developer, understanding these methods will be valuable for your Python projects.

We have provided different methods to remove empty strings from a Python list.

Understanding Empty Strings in Python

An empty string in Python is represented by “” or ”. It is a string without any characters.

When working with lists, empty strings can cause unexpected results in calculations or data analysis, making it crucial to handle them correctly.

Properly managing empty strings ensures data integrity and the accuracy of your results.

Creating Sample Lists

Before we delve into the methods of removing empty strings, let’s create some sample lists that include both non-empty strings and empty strings:

# Sample lists with empty strings
sample_list1 = ["apple", "banana", "orange", ""]
sample_list2 = ["python", "", "java", "javascript"]
sample_list3 = ["hello", 42, True, [1, 2, 3], ""]

Different Ways to Python Remove Empty String From List

Using List Comprehension

List comprehension is a concise and powerful way to manipulate lists in Python. To remove empty strings from a list, we can use a one-liner list comprehension that filters out these empty elements:

# Using list comprehension
non_empty_list1 = [item for item in sample_list1 if item != ""]
non_empty_list2 = [item for item in sample_list2 if item]    

The first list comprehension filters out empty strings from “sample_list1”, and the second list comprehension removes falsy values (including empty strings) from “sample_list2”.

Utilizing the filter() Function

The “filter()” function provides an alternative approach to remove empty strings from a list. The filter() function filters elements based on a specified function.

Here’s how we can use it:

# Using filter() function
non_empty_list3 = list(filter(lambda item: item != "", sample_list3))

In the example above, we use a lambda function to check whether each element is not an empty string. The filter() function then returns the filtered list with empty strings removed.

Removing Empty Strings with a Loop (for-loop)

For those who prefer a more traditional approach, we can use a for-loop to remove empty strings from a list:

# Using a for-loop
non_empty_list4 = []
for item in sample_list1:
    if item != "":

In this example, we iterate through “sample_list1” and add each non-empty element to the “non_empty_list4”.

This method is straightforward and easy to understand.

Leveraging lambda Functions

Lambda functions are anonymous functions that can be written in a single line. Combining lambda functions with the filter() function allows us to remove empty strings in a more concise way:

# Using lambda function with filter()
non_empty_list5 = list(filter(lambda item: item, sample_list2))

In the above example, the lambda function acts as a filter, keeping only truthy values (i.e., non-empty strings) in “sample_list2”.

Handling Nested Lists

Nested lists can be challenging to work with when removing empty strings. We’ll implement a recursive function to effectively handle nested lists and remove empty strings:

# Handling nested lists
def remove_empty_strings(nested_list):
    result_list = []
    for item in nested_list:
        if isinstance(item, list):
        elif item != "":
    return result_list

nested_sample_list = ["hello", ["", "world"], ["", "", "python"], "list", "", "nested"]
non_empty_nested_list = remove_empty_strings(nested_sample_list)

The recursive function “remove_empty_strings” traverses through nested lists, removing empty strings at all levels.

Dealing with Whitespace Strings

Whitespace strings, consisting of spaces or tabs, are often considered as empty strings.

To handle whitespace strings, we can use the “strip()” method to remove leading and trailing whitespaces before checking:

# Handling whitespace strings
whitespace_sample_list = ["hello", " ", "world", "\t", "python", "list", "  "]
non_empty_list6 = [item for item in whitespace_sample_list if item.strip() != ""]

In this example, the “strip()” method removes leading and trailing spaces or tabs from each element before checking if it’s an empty string.

In-Place vs. Non-In-Place Modification

When removing empty strings from a list, you have two options: modify the original list in-place or create a new list with the non-empty elements. Here’s how they differ:

# In-place modification
sample_list1 = ["apple", "banana", "orange", ""]
sample_list1 = [item for item in sample_list1 if item]

# Non-in-place modification
sample_list2 = ["python", "", "java", "javascript"]
non_empty_list7 = [item for item in sample_list2 if item]

Be cautious when choosing between in-place and non-in-place modification, as it may impact other parts of your program.

Handling Large Lists – Performance Considerations

For large lists, performance becomes critical. Let’s compare the efficiency of two methods using a large list:

import time

# Sample large list
large_list = [""] * 1000000

# Method 1: Using list comprehension
start_time = time.time()
non_empty_list8 = [item for item in large_list if item != ""]
print("Method 1 - Execution time:", time.time() - start_time)

# Method 2: Using filter() function
start_time = time.time()
non_empty_list9 = list(filter(lambda item: item != "", large_list))
print("Method 2 - Execution time:", time.time() - start_time)

By comparing execution times, we can determine the most efficient method for handling large lists.


We have explored various methods to remove empty strings from a Python list. Handling empty strings is crucial for accurate data processing. Depending on your use case, you can choose the method that best suits your requirements.

Practice and experiment with these methods to become proficient in handling list data in Python.

References for more learning