Remove all strings from a list of tuples in Python

When working with a list of tuples in Python, you may need to remove all string elements from each tuple while keeping non-string elements. This article explores three different approaches to accomplish this task using list comprehension, filter() with lambda functions, and for loops.

Using List Comprehension

List comprehension provides a concise and elegant way to filter out strings from tuples. This approach creates a new list by iterating through the original list and applying a condition to each element ?

def remove_strings_list_comprehension(tuples_list):
    return [tuple(element for element in t if not isinstance(element, str)) for t in tuples_list]

# Example usage
data = [(1, 'apple', 3.14), ('orange', 5, 'banana'), (7, 'grape', 'kiwi'), (42, 99)]
result = remove_strings_list_comprehension(data)
print(result)
[(1, 3.14), (5,), (7,), (42, 99)]

Using Filter with Lambda Function

This approach filters elements within each tuple using the filter() function combined with a lambda expression ?

def remove_strings_filter(tuples_list):
    result = []
    for t in tuples_list:
        filtered_elements = tuple(filter(lambda x: not isinstance(x, str), t))
        result.append(filtered_elements)
    return result

# Example usage
data = [(1, 'apple', 3.14), ('orange', 5, 'banana'), (7, 'grape', 'kiwi'), (42, 99)]
result = remove_strings_filter(data)
print(result)
[(1, 3.14), (5,), (7,), (42, 99)]

Using For Loop with Explicit Iteration

A traditional for loop approach provides clear, readable code that's easy to understand and debug ?

def remove_strings_for_loop(tuples_list):
    filtered_list = []
    
    for tuple_item in tuples_list:
        non_string_elements = []
        
        for element in tuple_item:
            if not isinstance(element, str):
                non_string_elements.append(element)
        
        filtered_tuple = tuple(non_string_elements)
        filtered_list.append(filtered_tuple)
    
    return filtered_list

# Example usage
data = [(1, 'apple', 3.14), ('orange', 5, 'banana'), (7, 'grape', 'kiwi'), (42, 99)]
result = remove_strings_for_loop(data)
print(result)
[(1, 3.14), (5,), (7,), (42, 99)]

Handling Empty Tuples

All approaches handle cases where tuples contain only strings, resulting in empty tuples ?

data_with_strings_only = [('hello', 'world'), (1, 2, 3), ('only', 'strings')]
result = remove_strings_list_comprehension(data_with_strings_only)
print(result)
[(), (1, 2, 3), ()]

Comparison

Method Code Length Readability Performance
List Comprehension Short High (Pythonic) Fast
Filter + Lambda Medium Medium Medium
For Loop Long High (Explicit) Slower

Conclusion

List comprehension is typically the most efficient and Pythonic approach for removing strings from tuples. Use the explicit for loop approach when code clarity is more important than conciseness, or the filter approach when you prefer functional programming style.

Updated on: 2026-03-27T13:41:47+05:30

329 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements