Md Abrar Jahin
Md Abrar Jahin

Reputation: 354

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]]

Upvotes: 0

Views: 106

Answers (2)

Aditya Singh
Aditya Singh

Reputation: 41

You have the right idea with both of the approaches you just didn't account for the seperator, i.e., the commas. As the numbers are separated by commas you need to split() them before converting to int

[[int(num) for num in sub[0].split(",")] for sub in old]

[list(map(int, sublist[0].split(","))) for sublist in old]

Upvotes: 1

j1-lee
j1-lee

Reputation: 13929

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.

Upvotes: 1

Related Questions