Filter tuples according to list element presence in Python

When filtering tuples based on whether they contain specific elements from a target list, list comprehension combined with the any() function provides an efficient solution. This technique is useful for data filtering operations where you need to find tuples that share common elements with a reference list.

A list of tuples contains multiple tuples as elements, and list comprehension offers a concise way to iterate and apply conditions to filter the data.

Basic Filtering Example

Here's how to filter tuples that contain any element from a target list ?

my_list = [(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)]
target_list = [34, 11]

print("The list is:")
print(my_list)

my_result = [tup for tup in my_list if any(i in tup for i in target_list)]

print("The filtered tuple from the list is:")
print(my_result)
The list is:
[(11, 14), (54, 56, 87), (98, 0, 10), (13, 76)]
The filtered tuple from the list is:
[(11, 14)]

How It Works

The filtering logic uses nested iteration:

  • any(i in tup for i in target_list) checks if any element from target_list exists in the current tuple
  • i in tup returns True if element i is found in the tuple
  • any() returns True if at least one condition is True
  • Only tuples meeting this condition are included in the result

Multiple Matches Example

When multiple tuples contain target elements ?

data_tuples = [(1, 2, 3), (4, 5, 6), (7, 1, 9), (10, 11, 12)]
search_elements = [1, 5, 15]

filtered_tuples = [tup for tup in data_tuples if any(element in tup for element in search_elements)]

print("Original tuples:", data_tuples)
print("Search elements:", search_elements)
print("Filtered result:", filtered_tuples)
Original tuples: [(1, 2, 3), (4, 5, 6), (7, 1, 9), (10, 11, 12)]
Search elements: [1, 5, 15]
Filtered result: [(1, 2, 3), (4, 5, 6), (7, 1, 9)]

Alternative Approaches

Method Code Pattern Best For
List Comprehension + any() [tup for tup in tuples if any(x in tup for x in target)] Most readable and efficient
Filter Function filter(lambda tup: any(x in tup for x in target), tuples) Functional programming style
Set Intersection [tup for tup in tuples if set(tup) & set(target)] When working with unique elements

Set Intersection Method

Using set intersection for element matching ?

tuples_list = [(10, 20), (30, 40), (10, 50), (60, 70)]
target_elements = [10, 80]

# Using set intersection
result = [tup for tup in tuples_list if set(tup) & set(target_elements)]

print("Tuples containing target elements:", result)
Tuples containing target elements: [(10, 20), (10, 50)]

Conclusion

List comprehension with any() provides the most readable solution for filtering tuples based on element presence. The any() function efficiently stops checking once a match is found, making this approach both clear and performant for tuple filtering operations.

Updated on: 2026-03-25T17:25:50+05:30

516 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements