Sunday, November 17, 2024
Google search engine
HomeLanguagesPython – Filter tuple with all same elements

Python – Filter tuple with all same elements

Given List of tuples, filter tuples that have same values.

Input : test_list = [(5, 6, 5, 5), (6, 6, 6), (9, 10)] 
Output : [(6, 6, 6)] 
Explanation : 1 tuple with same elements.

Input : test_list = [(5, 6, 5, 5), (6, 5, 6), (9, 10)] 
Output : [] 
Explanation : No tuple with same elements.
 

Method #1 : Using list comprehension + set() + len()

In this, we check for length of set converted tuple to be 1, if that checks out, tuple is added to result, else, omitted.

Python3




# Python3 code to demonstrate working of
# Filter similar elements Tuples
# Using list comprehension + set() + len()
 
# initializing list
test_list = [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# length is computed using len()
res = [sub for sub in test_list if len(set(sub)) == 1]
         
# printing results
print("Filtered Tuples : " + str(res))


Output

The original list is : [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
Filtered Tuples : [(6, 6, 6), (1, 1)]

Time complexity: O(n), where n is the length of the test_list. The list comprehension + set() + len() takes O(n) time
Auxiliary Space: O(n), extra space of size n is required

Method #2 : Using filter() + lambda + set() + len()

In this, we perform task of filtering using filter(), and single element logic is checked in lambda function using set() and len().

Python3




# Python3 code to demonstrate working of
# Filter similar elements Tuples
# Using filter() + lambda + set() + len()
 
# initializing list
test_list = [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# end result converted to list object
# filter extracts req. tuples
res = list(filter(lambda sub : len(set(sub)) == 1, test_list))
         
# printing results
print("Filtered Tuples : " + str(res))


Output

The original list is : [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
Filtered Tuples : [(6, 6, 6), (1, 1)]

Method #3 : Using count() and len() methods

Approach

  1. Initiate a for loop to traverse list of tuples
  2. For each tuple check whether count of first element is equal to length of tuple
  3. If yes then all elements of tuple are same, append such tuple to output list
  4. Display output list

Python3




# Python3 code to demonstrate working of
# Filter similar elements Tuples
 
# initializing list
test_list = [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
res=[]
for i in test_list:
    if(i.count(i[0])==len(i)):
        res.append(i)
     
         
# printing results
print("Filtered Tuples : " + str(res))


Output

The original list is : [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
Filtered Tuples : [(6, 6, 6), (1, 1)]

Time Complexity : O(N)

Auxiliary Space : O(N)

Method 4 : Using a for loop and a set. 

Explanation:

We use a for loop to iterate over the tuples in test_list.
Inside the for loop, we create a set from the current tuple using the set() function. A set is an unordered collection of unique elements, so if all elements in the tuple are the same, the set will contain only one element.
We check the length of the set using the len() function. If the length is 1, it means that all elements in the tuple are the same, so we append the tuple to the new list res.
Finally, we print the filtered tuples.

Python3




# Python3 code to demonstrate working of
# Filter similar elements Tuples
 
# initializing list
test_list = [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Using for loop and set
res = []
for tup in test_list:
    if len(set(tup)) == 1:
        res.append(tup)
 
# printing results
print("Filtered Tuples : " + str(res))


Output

The original list is : [(5, 6, 5, 5), (6, 6, 6), (1, 1), (9, 10)]
Filtered Tuples : [(6, 6, 6), (1, 1)]

This approach has a time complexity of O(n*k), where n is the number of tuples in the list and k is the maximum length of a tuple. 

The auxiliary space is O(k), because we create a set for each tuple.

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments