Skip to content
Related Articles

Related Articles

Python – Extract tuples having K digit elements

Improve Article
Save Article
  • Last Updated : 20 Jul, 2022
Improve Article
Save Article

Given a list of tuples, extract all tuples having K digit elements.

Input : test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )], K = 2 
Output : [(34, 55), (12, 45), (78,)] 
Explanation : All tuples have numbers with 2 digits.

Input : test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (782, )], K = 3 
Output : [(782,)] 
Explanation : All tuples have numbers with 3 digits. 

Method #1 : Using all() + list comprehension

In this, we check for each element being of K digit by converting to string and checking its length. The all() is used to check if all elements are of similar size.

Python3




# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
# Using all() + list comprehension
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 2
 
# using len() and str() to check length and
# perform string conversion
res = [sub for sub in test_list if all(len(str(ele)) == K for ele in sub)]
 
# printing result
print("The Extracted tuples : " + str(res))


Output:

The original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)] The Extracted tuples : [(34, 55), (12, 45), (78,)]

Method #2 : Using all() + filter() + lambda

This is similar to above method, difference being filter() and lambda is used to solve problem of filtering.

Python3




# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
# Using all() + filter() + lambda
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 2
 
# filter() and lambda used for task of filtering
res = list(filter(lambda sub: all(len(str(ele)) == K for ele in sub), test_list))
 
# printing result
print("The Extracted tuples : " + str(res))


Output:

The original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)] The Extracted tuples : [(34, 55), (12, 45), (78,)]

Method #3: Using list(),map(),str() and len() methods

Converting each tuple element to string and converting that tuple to list after that iterating over the list finding the length of each element and appending to a new list.If the new list is [K,K] or[K] then the tuples have K digit elements.

Python3




# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initialising K
K = 2
 
res=[]
for i in test_list:
    x=list(map(str,i))
    p=[]
    for j in x:
        p.append(len(j))
    if(p==[K,K] or p==[K]):
        res.append(i)
     
# printing result
print("The Extracted tuples : " + str(res))


Output

The original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)]
The Extracted tuples : [(34, 55), (12, 45), (78,)]

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!