What is the easiest way to convert list with str
into list with int
in Python?
For example, we have to convert [\'1\', \'2\', \'3\']
[int(i) for i in str_list]
Python 2.x:
map(int, ["1", "2", "3"])
Python 3.x (in 3.x, map
returns an iterator, not a list as in 2.x):
list(map(int, ["1", "2", "3"]))
map
documentation: 2.6, 3.1
If It is array and has installed numpy. We can used below code as well.
import numpy as np
np.array(['1', '2', '3'],dtype=int)
If your strings are not only numbers (ie. u''), you can use :
new = [int(i) for i in ["1", "2", "3"] if isinstance(i, int) or isinstance(i, (str, unicode)) and i.isnumeric()]
You could also use list comprehensions:
new = [int(i) for i in old]
Or the map()
builtin function:
new = map(int, old)
Or the itertools.imap()
function, which will provide a speedup in some cases but in this case just spits out an iterator, which you will need to convert to a list (so it'll probably take the same amount of time):
import itertools as it
new = list(it.imap(int, old))