First Non-Empty String in list in Python

Given a list of strings, we need to find the first non-empty element. The challenge is that there may be one, two, or many empty strings at the beginning of the list, and we need to dynamically find the first non-empty string.

Using next()

The next() function moves to the next element that satisfies a condition. We can use it with a generator expression to find the first non-empty string ?

Example

string_list = ['', 'top', 'pot', 'hot', ' ', 'shot']

# Given list
print("Given list:", string_list)

# Using next() with generator expression
result = next(sub for sub in string_list if sub)

# Printing result
print("The first non-empty string is:", result)

The output of the above code is ?

Given list: ['', 'top', 'pot', 'hot', ' ', 'shot']
The first non-empty string is: top

Using next() with Default Value

To handle cases where all strings might be empty, we can provide a default value ?

string_list = ['', '', '']

# Using next() with default value
result = next((sub for sub in string_list if sub), "No non-empty string found")

print("Result:", result)
Result: No non-empty string found

Using filter() with next()

We can combine filter() with next() to filter out empty strings and get the first non-empty one ?

string_list = ['', 'top', 'pot', 'hot', ' ', 'shot']

# Given list
print("Given list:", string_list)

# Using filter() with next()
result = next(filter(None, string_list))

# Printing result
print("The first non-empty string is:", result)
Given list: ['', 'top', 'pot', 'hot', ' ', 'shot']
The first non-empty string is: top

Using a For Loop

A simple iterative approach using a for loop ?

string_list = ['', 'top', 'pot', 'hot', ' ', 'shot']

# Using for loop
for string in string_list:
    if string:  # Check if string is not empty
        print("The first non-empty string is:", string)
        break
else:
    print("No non-empty string found")
The first non-empty string is: top

Comparison

Method Pros Cons
next() with generator Memory efficient, concise Raises StopIteration if no match
next() with default Safe, handles empty lists Slightly more verbose
filter() with next() Readable, functional approach Creates filter object
For loop Easy to understand More verbose

Conclusion

Use next() with a generator expression for the most efficient solution. Always consider providing a default value to handle cases where no non-empty string exists in the list.

Updated on: 2026-03-15T18:05:06+05:30

878 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements