user285070
user285070

Reputation: 811

What is the easiest way to convert list with str into list with int?

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.

Upvotes: 22

Views: 8009

Answers (5)

kgdc
kgdc

Reputation: 125

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)

Upvotes: 2

akarzim
akarzim

Reputation: 141

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

Upvotes: 2

SilentGhost
SilentGhost

Reputation: 319561

[int(i) for i in str_list]

Upvotes: 19

Chris Lutz
Chris Lutz

Reputation: 75389

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

Upvotes: 5

codeape
codeape

Reputation: 100766

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

Upvotes: 25

Related Questions