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']
to [1, 2, 3]
. Of course, we can use a for
loop, but it's too easy.
Asked
Active
Viewed 7,509 times
20

vaultah
- 44,105
- 12
- 114
- 143

user285070
- 761
- 2
- 12
- 21
5 Answers
24
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"]))

codeape
- 97,830
- 24
- 159
- 188
-
1I'm under the impression that `map` is generally disliked. It was even almost removed from Python 3. – pafcu Oct 10 '10 at 13:50
-
@pafcu I don't understand that. That sort of functionality is essential for functional programming... – Elliott Aug 15 '20 at 08:04
5
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))

Chris Lutz
- 73,191
- 16
- 130
- 183
2
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()]

akarzim
- 141
- 5
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)

kgdc
- 85
- 1
- 1
- 10