Many times, the data we handle might not be in the desired form for any application and has to go through the stage of preprocessing. One such kind of form can be a number in the form of a string that too is a list in the list and we need to segregate it into digit-separated integers. Let’s discuss certain ways in Python in which this problem can be solved.
Convert list of numerical string to list of Integers using list comprehension
This problem can be dealt with list comprehension, as a shorthand for generic loops that we would require to run to perform this particular task by iterating each list’s each character of the string and converting to an integer.
Python3
# initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list : " + str (test_list)) # using list comprehension # converting string list to integer list res = [[ int (i) for i in sub] for i in test_list for sub in i] # print result print ( "The list after conversion : " + str (res)) |
The original list : [['24'], ['45'], ['78'], ['40']] The list after conversion : [[2, 4], [4, 5], [7, 8], [4, 0]]
Convert list of numerical string to list of Integers using map() + list comprehension
The task performed in the above function can also be reduced to include the map function which binds the conversion to an integer to a function and the rest of the task is performed by the list comprehension function itself.
Python3
# Python3 code to demonstrate # converting string list to integer list # using list comprehension + map() # initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list : " + str (test_list)) # using list comprehension + map() # converting string list to integer list res = [ list ( map ( int , list (sub[ 0 ]))) for sub in test_list if sub] # print result print ( "The list after conversion : " + str (res)) |
The original list : [['24'], ['45'], ['78'], ['40']] The list after conversion : [[2, 4], [4, 5], [7, 8], [4, 0]]
Convert list of numerical string to list of Integers using lambda expression
The list comprehension inside the lambda function iterates through each character of the string and converts it to an integer. This lambda function is then applied to each sublist in the list using the map() function.
Python3
# Python3 code to demonstrate # converting string list to integer list # initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list : " + str (test_list)) # apply the lambda function to each element in test_list res = list ( map ( lambda x: [ int (i) for i in x[ 0 ]], test_list)) # print result print ( "The list after conversion : " + str (res)) #This code is contributed by Edula Vinay Kumar Reddy |
The original list : [['24'], ['45'], ['78'], ['40']] The list after conversion : [[2, 4], [4, 5], [7, 8], [4, 0]]
Convert list of numerical string to list of Integers using the reduce() function
Initialize an empty list to store the final result. Traverse through each sublist of the given list. For each sublist, apply the reduce() function to concatenate all the strings in that sublist. Convert the concatenated string to an integer list by iterating over each character of the string and converting it to an integer. Append the integer list to the result list. Return the final result list.
Python3
# import the reduce() function from the functools module from functools import reduce # initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list : " + str (test_list)) # using the reduce() function to concatenate each string #in the nested list, and then converting each concatenated #string to an integer res = [[ int (ch) for ch in reduce ( lambda x, y: x + y, ele)] for ele in test_list] # print result print ( "The list after conversion : " + str (res)) |
The original list : [['24'], ['45'], ['78'], ['40']] The list after conversion : [[2, 4], [4, 5], [7, 8], [4, 0]]
Convert list of numerical string to list of Integers using Heapq method
Import the heapq module. Initialize a nested list with strings as elements. Use the heapq.merge() function to concatenate the nested lists into a single list of strings, and store the result in merged_list. Use a list comprehension to convert each string in merged_list to a list of integers and store the result in res. Print the original list and the modified list.
Python3
import heapq # initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list : " + str (test_list)) # using heapq.merge() to concatenate the nested lists merged_list = list (heapq.merge( * test_list)) # converting the concatenated strings to integers res = [[ int (ch) for ch in str (ele)] for ele in merged_list] # print result print ( "The list after conversion : " + str (res)) #This code is contributed by Rayudu. |
The original list : [['24'], ['45'], ['78'], ['40']] The list after conversion : [[2, 4], [4, 0], [4, 5], [7, 8]]
Convert a list of numerical strings to list of Integers using nested loops
Initialize an empty list to store the final result. Traverse through each sublist of the given list. For each sublist, initialize an empty list to store the integer representation of the string characters. Iterate each character in the string and convert it to an integer using the int() function. Append the integer to the inner list. Append the inner list to the result list. Return the final result list.
Python3
print ( "GFG" ) # initializing list test_list = [[ '24' ], [ '45' ], [ '78' ], [ '40' ]] # printing original list print ( "The original list: " + str (test_list)) # convert string list to integer list res = [] for sublist in test_list: inner_list = [] for string in sublist: int_list = [ int (char) for char in string] inner_list.extend(int_list) res.append(inner_list) # print result print ( "The list after conversion: " + str (res)) |
GFG The original list: [['24'], ['45'], ['78'], ['40']] The list after conversion: [[2, 4], [4, 5], [7, 8], [4, 0]]