Open In App

Python – Extract Monodigit elements

Last Updated : 30 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given List of numbers, extract all numbers with only similar digit.

Input : test_list = [463, 888, 123, ‘aaa’, 112, 111, ‘gfg’, 939, 4, ‘ccc’] 
Output : [888, ‘aaa’, 111, 4, ‘ccc’] 
Explanation : All elements having single unique digit or character.

Input : test_list = [463, “GFG”, 8838, 43, 991] 
Output : [] 
Explanation : No element found to be having only single digit. 

Method #1 : Using list comprehension + all()

In this, we iterate all the elements using list comprehension, all() is used to check equality of all digits with first digit.

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
# Using list comprehension + all()
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
 
# all() checks for all similar digits
res = [sub for sub in test_list if all(
    str(ele) == str(sub)[0] for ele in str(sub))]
 
# printing result
print("Extracted Numbers : " + str(res))


Output:

The original list is : [463, 888, 123, ‘aaa’, 112, 111, ‘gfg’, 939, 4, ‘ccc’] Extracted Numbers : [888, ‘aaa’, 111, 4, ‘ccc’]

Time complexity: O(n * k), where n is the length of the list and k is the maximum number of digits in a single element of the list.
Auxiliary space: O(n), as we are creating a new list to store the extracted monodigit elements.

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

In this, we perform task of filtering using lambda function, filter(), and all() is again used to check equality of all digits.

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
# Using filter() + lambda + all()
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
 
# all() checks for all similar digits
# filter() used for filtering
res = list(filter(lambda sub: all(str(ele) == str(
    sub)[0] for ele in str(sub)), test_list))
 
# printing result
print("Extracted Numbers : " + str(res))


Output:

The original list is : [463, 888, 123, ‘aaa’, 112, 111, ‘gfg’, 939, 4, ‘ccc’] Extracted Numbers : [888, ‘aaa’, 111, 4, ‘ccc’]

Time complexity: O(n * k) where n is the length of the input list and k is the maximum number of digits in a number in the list.
Auxiliary space: O(k) where k is the maximum number of digits in a number in the list, for creating the lambda function.

Method #3 : Using list(),map(),count(),len()

Initially convert every element of list to string.Now iterate over list and iterate over each string in list, check whether the occurrence of first element is equal to length of list.If it is True then the elements of list are having mono digits.

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
x=list(map(str,test_list))
res=[]
for i in range(0,len(x)):
    if(x[i].count(x[i][0])==len(x[i])):
        res.append(test_list[i])
 
# printing result
print("Extracted Numbers : " + str(res))


Output

The original list is : [463, 888, 123, 'aaa', 112, 111, 'gfg', 939, 4, 'ccc']
Extracted Numbers : [888, 'aaa', 111, 4, 'ccc']

Time complexity: O(n * k) where n is the length of the input list and k is the maximum number of digits in a number in the list.
Auxiliary space: O(k) where k is the maximum number of digits in a number in the list, for creating the lambda function.

Method #4 : Using list(),map(),len() methods and * operator

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
x=list(map(str,test_list))
res=[]
for i in range(0,len(x)):
    a=x[i][0]*len(x[i])
    if(a==x[i]):
        res.append(test_list[i])
 
# printing result
print("Extracted Numbers : " + str(res))


Output

The original list is : [463, 888, 123, 'aaa', 112, 111, 'gfg', 939, 4, 'ccc']
Extracted Numbers : [888, 'aaa', 111, 4, 'ccc']

Method #5 : Using list(),map(),operator.countOf(),len() methods

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
x=list(map(str,test_list))
res=[]
for i in range(0,len(x)):
    import operator
    if(operator.countOf(x[i],x[i][0])==len(x[i])):
        res.append(test_list[i])
 
# printing result
print("Extracted Numbers : " + str(res))


Output

The original list is : [463, 888, 123, 'aaa', 112, 111, 'gfg', 939, 4, 'ccc']
Extracted Numbers : [888, 'aaa', 111, 4, 'ccc']

Time Complexity : O(N)
Auxiliary Space : O(N)

Method #6: Using a for loop and string conversion

We can also solve this problem using a simple for loop and string conversion. We will convert each element of the list to a string and check if all the characters are the same. If they are the same, we will append the element to a new list.

steps 

Initialize an empty list to store the extracted elements.
Iterate over each element of the input list using a for loop.
Convert the element to a string using the str() function.
Check if all the characters of the string are the same using the set() function. If the length of the set is 1, it means that all the characters are the same.
If all the characters are the same, append the element to the new list.
Return the new list containing the extracted elements.

Python3




# Python3 code to demonstrate working of
# Extract Monodigit elements
 
# initializing list
test_list = [463, 888, 123, "aaa", 112, 111, "gfg", 939, 4, "ccc"]
 
# printing original lists
print("The original list is : " + str(test_list))
 
# Using for loop and string conversion
res = []
for elem in test_list:
    elem_str = str(elem)
    if len(set(elem_str)) == 1:
        res.append(elem)
 
# printing result
print("Extracted Numbers : " + str(res))


Output

The original list is : [463, 888, 123, 'aaa', 112, 111, 'gfg', 939, 4, 'ccc']
Extracted Numbers : [888, 'aaa', 111, 4, 'ccc']

Time complexity: O(n*k), where n is the length of the input list and k is the average length of the elements in the list.
Auxiliary space: O(1), as we are not using any extra space apart from the output list.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads