I have to convert all string elements of a 2-D list to integers except for the first element. For example, for a list:
result = [['foo', '2', '21', '48'], ['bar', '18', '180', '54']]
I only wish to change the type of the "numbers" in the list to int type (say, ‘2’, ’21’, ’48’ in first row).
I have tried using a list comprehension,
result = [int(x) for x in result[i]] # where i is the traversal variable
but this gives
invalid literal for int() with base 10: 'foo'
which is precisely what I am trying to avoid.
Any ideas on how to achieve this without creating another copy of the list? I want to reflect the changes back to the original list.
Perhaps you’re looking for
out = [[int(x) if x.isdigit() else x for x in lst] for lst in result]
[['foo', 2, 21, 48], ['bar', 18, 180, 54]]
Answered By – enke
Answer Checked By – Robin (BugsFixing Admin)