2010-03-11 13 views

risposta

17

Python 2.x:

map(int, ["1", "2", "3"]) 

Python 3.x (in 3.x, map restituisce un iteratore, non una lista come in 2.x):

list(map(int, ["1", "2", "3"])) 

map documentazione : 2.6, 3.1

+1

Ho l'impressione che la mappa non sia generalmente gradita. È stato persino quasi rimosso da Python 3. – pafcu

17
[int(i) for i in str_list] 
+0

Il ')' alla fine è sbagliato, ma in caso contrario +1 –

+0

+1 Mi piace molto 'map', ma i generatori sono molto più leggibili. –

4

Si potrebbe anche usare l'elenco compreh ensioni:

new = [int(i) for i in old] 

o la funzione map() incorporato:

new = map(int, old) 

o la funzione itertools.imap(), che fornirà un aumento di velocità in alcuni casi, ma in questo caso solo sputa fuori un iteratore, che è necessario convertire in una lista (quindi probabilmente prendere la stessa quantità di tempo):

import itertools as it 
new = list(it.imap(int, old)) 
2

Se le stringhe non sono solo numeri (es. u ''), è possibile utilizzare:

new = [int(i) for i in ["1", "2", "3"] if isinstance(i, int) or isinstance(i, (str, unicode)) and i.isnumeric()] 
0

Se è array e ha installato numpy. Possiamo usare anche il codice qui sotto.

import numpy as np 

np.array(['1', '2', '3'],dtype=int) 
Problemi correlati