Skip to content
Advertisement

Converting list of lists of strings into integer in Python

I want to convert the string elements to integers within the each following list:

old = [['29,1,22,14,32,11,11,3'],
 ['2,3,1,2,1,4,1,1,3,1'],
 ['5,2,1,1,3,1,2,4,1,1,2,2,2,1,19,2,1,7'],
 ['2,2,1,5,6,1,2,3,9,2,1,1,2,6,1,1,2,3,1,1,2'],
 ['29,44,5,8,17,20,26,47,80,29,47,17,23,26,46,69,8,2,5,38,8,5,5']]

I have tried the following codes:

[[int(num) for num in sub] for sub in old]
[list(map(int, sublist)) for sublist in old]

These are not working in my case. I need the following outputs:

new = [[29,1,22,14,32,11,11,3],
 [2,3,1,2,1,4,1,1,3,1],
 [5,2,1,1,3,1,2,4,1,1,2,2,2,1,19,2,1,7],
 [2,2,1,5,6,1,2,3,9,2,1,1,2,6,1,1,2,3,1,1,2],
 [29,44,5,8,17,20,26,47,80,29,47,17,23,26,46,69,8,2,5,38,8,5,5]]

Advertisement

Answer

Try:

old = [['29,1,22,14,32,11,11,3'],
 ['2,3,1,2,1,4,1,1,3,1'],
 ['5,2,1,1,3,1,2,4,1,1,2,2,2,1,19,2,1,7'],
 ['2,2,1,5,6,1,2,3,9,2,1,1,2,6,1,1,2,3,1,1,2'],
 ['29,44,5,8,17,20,26,47,80,29,47,17,23,26,46,69,8,2,5,38,8,5,5']]

new = [[int(x) for x in sublst[0].split(',')] for sublst in old]
# new = [list(map(int, sublst[0].split(','))) for sublst in old] # an alternative

print(new)
# [[29, 1, 22, 14, 32, 11, 11, 3], [2, 3, 1, 2, 1, 4, 1, 1, 3, 1], [5, 2, 1, 1, 3, 1, 2, 4, 1, 1, 2, 2, 2, 1, 19, 2, 1, 7], [2, 2, 1, 5, 6, 1, 2, 3, 9, 2, 1, 1, 2, 6, 1, 1, 2, 3, 1, 1, 2], [29, 44, 5, 8, 17, 20, 26, 47, 80, 29, 47, 17, 23, 26, 46, 69, 8, 2, 5, 38, 8, 5, 5]]

You need to use split to parse each long string into small strings, and then apply int to convert a string into an int.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement