Convertir una cadena a formato lista

Francesc Altet faltet en carabos.com
Mar Jun 14 10:25:52 CEST 2005


A Dimarts 14 Juny 2005 01:56, Pepe Aracil va escriure:
> A ver si esto te sirve:
>
> [int(i) for i in '[2,3]' if i.isdigit()]

Pues si. Con una mezcla de eso y lo de Ernesto, he conseguido justo lo
que queria:

In [9]:[int(i) for i in '(23, 2)'[1:-1].split(',') if i.strip().isdigit()]
Out[9]:[23, 2]

In [10]:[int(i) for i in '(23,)'[1:-1].split(',') if i.strip().isdigit()]
Out[10]:[23]

Además de más seguro, esto es incluso más rápido (4 veces más) que eval:

In [63]:min(timeit.Timer("convierte('(23, 2)')", "def convierte(lst): return 
[int(i) for i in lst[1:-1].split(',') if i.strip().isdigit()] 
").repeat(3,1000))
Out[63]:0.0085310935974121094

In [64]:min(timeit.Timer("eval('(23, 2)')").repeat(3,1000))
Out[64]:0.033796072006225586

Gracias!

-- 
>0,0<   Francesc Altet     http://www.carabos.com/
V   V   Cárabos Coop. V.   Enjoy Data
 "-"




Más información sobre la lista de distribución Python-es