Python - Extract tuples having K digit elements
Last Updated :
30 Apr, 2023
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,)]
Time Complexity: O(n) where n is the number of elements in the list “test_list”. list comprehension + all() performs n number of operations.
Auxiliary Space: O(n), extra space of size n is required
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))
OutputThe original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)]
The Extracted tuples : [(34, 55), (12, 45), (78,)]
Method#4:Using a for loop and string slicing
Algorithm:
- Initialize the list of tuples.
- Print the original list.
- Initialize the value of K to 2.
- Initialize an empty list called res to store the extracted tuples.
- For each tuple in the list, set the flag to True.
- For each element in the tuple, check if the length of the string representation of the element is equal to K. If it's not, set the flag to False and break out of the loop.
- If the flag is still True after checking all elements of the tuple, append the tuple to the res list.
- Print the extracted tuples.
Python3
# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
# Using for loop and string slicing
# 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 a for loop and string slicing to check length
res = []
for tup in test_list:
flag = True
for ele in tup:
if len(str(ele)) != K:
flag = False
break
if flag:
res.append(tup)
# printing result
print("The Extracted tuples : " + str(res))
#This code is contributed by Vinay Pinjala.
OutputThe original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)]
The Extracted tuples : [(34, 55), (12, 45), (78,)]
Time complexity:
The time complexity of this code is O(n*m), where n is the length of the list of tuples and m is the average length of the tuples. The for loop iterates over each tuple in the list, and then iterates over each element in the tuple to check its length. Since the length of the tuples can vary, we use m to represent the average length of the tuples.
Space complexity:
The space complexity of this code is O(k), where k is the length of the res list. The res list stores the extracted tuples, which can be at most the same length as the original list of tuples.
Method #6: Using a generator expression and tuple unpacking
We can use a generator expression to iterate through the tuples and yield only the tuples that contain K digits elements. We can use tuple unpacking to check the length of each element in the tuple.
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
# Using a generator expression and tuple unpacking
res = tuple(t for t in test_list if all(len(str(e)) == K for e in t))
# printing result
print("The Extracted tuples : " + str(res))
OutputThe original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)]
The Extracted tuples : ((34, 55), (12, 45), (78,))
Time complexity: O(nk), where n is the length of the list and k is the length of the largest element in the list.
Auxiliary space: O(1), because we are not using any extra data structures to store intermediate results.
Similar Reads
Python - Extract tuples with elements in Range
Given list of tuples, extract tuples having elements in range. Input : test_list = [(4, 5, 7), (5, 6), (3, 8, 10 ), (4, 10)], strt, end = 5, 6 Output : [(5, 6)] Explanation : Only 1 tuple lies in range of 5-6. Input : test_list = [(4, 5, 7), (5, 6), (3, 8, 10 ), (4, 10)], strt, end = 1, 10 Output :
4 min read
Python | Elementwise AND in tuples
Sometimes, while working with records, we can have a problem in which we may need to perform mathematical bitwise AND operation across tuples. This problem can occur in day-day programming. Letâs discuss certain ways in which this task can be performed. Method #1 : Using zip() + generator expression
5 min read
Python - Extract digits from Tuple list
Sometimes, while working with Python lists, we can have a problem in which we need to perform extraction of all the digits from tuple list. This kind of problem can find its application in data domains and day-day programming. Let's discuss certain ways in which this task can be performed. Input : t
6 min read
Python | Find Dissimilar Elements in Tuples
Sometimes, while working with tuples, we can have a problem in which we need dissimilar features of two records. This type of application can come in Data Science domain. Let's discuss certain ways in which this problem can be solved. Method #1 : Using set() + "^" operator This task can be performed
8 min read
Python | Adding N to Kth tuple element
Many times, while working with records, we can have a problem in which we need to change the value of tuple elements. This is a common problem while working with tuples. Let's discuss certain ways in which N can be added to Kth element of tuple in list. Method #1 : Using loop Using loops this task c
3 min read
Python | N element incremental tuples
Sometimes, while working with data, we can have a problem in which we require to gather a data that is of the form of sequence of increasing element tuple with each tuple containing the element N times. Let's discuss certain ways in which this task can be performed. Method #1 : Using generator expre
5 min read
Python - Extract Elements from Ranges in List
We are given a list and list containing tuples we need to extract element from ranges in tuples list. For example, n = [10, 20, 30, 40, 50, 60, 70, 80, 90] and r = [(1, 3), (5, 7)] (ranges) we need to extract elements so that output should be [[20, 30, 40], [60, 70, 80]].Using List ComprehensionList
3 min read
Python - Group Tuples by Kth Index Element
Sometimes, while working with Python records, we can have a problem in which we need to perform grouping of elements of tuple by similar Kth index element. This kind of problem can have application in web development domain. Let's discuss the certain way in which this task can be performed. Input :
5 min read
Python - Extract Kth element of every Nth tuple in List
Given list of tuples, extract Kth column element of every Nth tuple. Input :test_list = [(4, 5, 3), (3, 4, 7), (4, 3, 2), (4, 7, 8), (6, 4, 7), (2, 5, 7), (1, 9, 10), (3, 5, 7)], K = 2, N = 3 Output : [3, 8, 10] Explanation : From 0th, 3rd, and 6th tuple, 2nd elements are 3, 8, 10. Input :test_list
8 min read
Python - Reform K digit elements
Given the Python list, reform the element to have K digits in a single element. Input : test_list = [223, 67, 332, 1, 239, 2, 931], K = 2 Output : [22, 36, 73, 32, 12, 39, 29, 31] Explanation : Elements reformed to assign 2 digits to each element. Input : test_list = [223, 67, 3327], K = 3 Output :
3 min read