Python – Extract Tuples with all Numeric Strings
Last Updated :
15 Mar, 2023
Given a list of tuples, extract only those tuples which have all numeric strings.
Input : test_list = [(“45”, “86”), (“Gfg”, “1”), (“98”, “10”)]
Output : [(’45’, ’86’), (’98’, ’10’)]
Explanation : Only number representing tuples are filtered.
Input : test_list = [(“Gfg”, “1”)]
Output : []
Explanation : No tuple containing just numbers.
Method #1 : Using list comprehension + all() + isdigit()
In this, we check for string being numeric string using isdigit() and all() is used to check for all strings. List comprehension is used to iterate all tuples.
Python3
test_list = [( "45" , "86" ), ( "Gfg" , "1" ), ( "98" , "10" ), ( "Gfg" , "Best" )]
print ( "The original list is : " + str (test_list))
res = [sub for sub in test_list if all (ele.isdigit() for ele in sub)]
print ( "Filtered Tuples : " + str (res))
|
Output
The original list is : [('45', '86'), ('Gfg', '1'), ('98', '10'), ('Gfg', 'Best')]
Filtered Tuples : [('45', '86'), ('98', '10')]
Method #2 : Using lambda + filter() + isdigit()
In this, we perform task of filtering using filter() + lambda, and isdigit() is used to check for numerics.
Python3
test_list = [( "45" , "86" ), ( "Gfg" , "1" ), ( "98" , "10" ), ( "Gfg" , "Best" )]
print ( "The original list is : " + str (test_list))
res = list ( filter ( lambda sub: all (ele.isdigit() for ele in sub), test_list))
print ( "Filtered Tuples : " + str (res))
|
Output
The original list is : [('45', '86'), ('Gfg', '1'), ('98', '10'), ('Gfg', 'Best')]
Filtered Tuples : [('45', '86'), ('98', '10')]
Method #3 : Using list comprehension + all() + isnumeric()
Python3
test_list = [( "45" , "86" ), ( "Gfg" , "1" ), ( "98" , "10" ), ( "Gfg" , "Best" )]
print ( "The original list is : " + str (test_list))
res = [sub for sub in test_list if all (ele.isnumeric() for ele in sub)]
print ( "Filtered Tuples : " + str (res))
|
Output
The original list is : [('45', '86'), ('Gfg', '1'), ('98', '10'), ('Gfg', 'Best')]
Filtered Tuples : [('45', '86'), ('98', '10')]
The Time and Space Complexity for all the methods are the same:
Time Complexity: O(n2)
Auxiliary Space: O(n2)
Method #4 : Using join(),replace() and len() methods
Python3
test_list = [( "45" , "86" ), ( "Gfg" , "1" ), ( "98" , "10" ), ( "Gfg" , "Best" )]
print ( "The original list is : " + str (test_list))
digits = "0123456789"
res = []
for i in test_list:
x = "".join(i)
for j in digits:
x = x.replace(j, "")
if ( len (x) = = 0 ):
res.append(i)
print ( "Filtered Tuples : " + str (res))
|
Output
The original list is : [('45', '86'), ('Gfg', '1'), ('98', '10'), ('Gfg', 'Best')]
Filtered Tuples : [('45', '86'), ('98', '10')]
Method #5:Using loop and re
- Initialize the test_list with tuples.
- Print the original list.
- Initialize the result list.
- Loop through each tuple in the test_list.
- For each tuple in the test_list, check if all elements in the tuple are numeric.
- If all elements are numeric, append the tuple to the result list.
- Print the filtered tuples.
Python3
import re
test_list = [( "45" , "86" ), ( "Gfg" , "1" ), ( "98" , "10" ), ( "Gfg" , "Best" )]
print ( "The original list is : " + str (test_list))
res = []
for sub in test_list:
if all ([re.match( '^[0-9]+$' , i) for i in sub]):
res.append(sub)
print ( "Filtered Tuples : " + str (res))
|
Output
The original list is : [('45', '86'), ('Gfg', '1'), ('98', '10'), ('Gfg', 'Best')]
Filtered Tuples : [('45', '86'), ('98', '10')]
Time complexity: The time complexity of this code is O(n*m) where n is the length of the input list and m is the maximum length of the tuples in the input list. This is because we are iterating through the input list and for each tuple, we are iterating through all its elements to check if they are numeric using regular expressions.
Space complexity: The space complexity of this code is O(k), where k is the number of tuples that satisfy the condition of having all numeric strings. This is because we are creating a new list to store these tuples. The space required for the regular expression matches is negligible in comparison.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...