Python program to extract only the numbers from a list which have some specific digits
Given Elements List, extract numbers with specific digits.
Input : test_list = [3456, 23, 128, 235, 982], dig_list = [2, 3, 5, 4]
Output : [23, 235]
Explanation : 2, 3 and 2, 3, 5 are in digit list, hence extracted elements.
Input : test_list = [3456, 23, 28, 235, 982], dig_list = [2, 3, 5, 4, 8]
Output : [23, 28, 235]
Explanation : 2, 3; 2, 8 and 2, 3, 5 are in digit list, hence extracted elements.
Method #1 : Using list comprehension + all()
In this, we check for each element in number against the elements from target list to be present, if all are found in list, element is returned.
Python3
# Python3 code to demonstrate working of # Elements with specific digits # Using list comprehension + all() # initializing list test_list = [ 345 , 23 , 128 , 235 , 982 ] # printing original list print ( "The original list is : " + str (test_list)) # initializing digit list dig_list = [ 2 , 3 , 5 , 4 ] # checking for all digits using all() res = [sub for sub in test_list if all ( int (ele) in dig_list for ele in str (sub))] # printing result print ( "Extracted elements : " + str (res)) |
Output:
The original list is : [345, 23, 128, 235, 982] Extracted elements : [345, 23, 235]
Method #2 : Using filter() + lambda + all()
In this, filtering of elements is done using filter() + lambda, all() is used to check for all the digits from other list.
Python3
# Python3 code to demonstrate working of # Elements with specific digits # Using filter() + lambda + all() # initializing list test_list = [ 345 , 23 , 128 , 235 , 982 ] # printing original list print ( "The original list is : " + str (test_list)) # initializing digit list dig_list = [ 2 , 3 , 5 , 4 ] # filter() used to filter from logic res = list ( filter ( lambda sub : all ( int (ele) in dig_list for ele in str (sub)), test_list)) # printing result print ( "Extracted elements : " + str (res)) |
Output:
The original list is : [345, 23, 128, 235, 982] Extracted elements : [345, 23, 235]