I have a list:
[\'Jack\', 18, \'IM-101\', 99.9]
How do I filter it to get only the integers from it??
I tried
map(i
Use filter:
filter(lambda e: isinstance(e, int), x)
In case the list contains integers that are formatted as str
, the list comprehension would not work.
['Jack', '18', 'IM-101', '99.9']
I figured out the following alternative solution for that case:
list_of_numbers = []
for el in your_list:
try:
list_of_numbers.append(int(el))
except ValueError:
pass
You can find more details about this solution in this post, containing a similar question.
Use list comprehension
>>> t = ['Jack', 18, 'IM-101', 99.9]
>>> [x for x in t if type(x) == type(1)]
[18]
>>>
map(int, x) throws an error
map function applies int(t) on every element of x.
This throws an error because int('Jack') will throw an error.
[Edit:]
Also isinstance is purer way of checking that it is of type integer, as sukhbir says.
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]