Contar digitos en un string

Daniel Garcia Moreno dani en danigm.net
Mie Dic 17 11:26:39 CET 2008


El mié, 17-12-2008 a las 11:01 +0100, antonio escribió:
> El mié, 17-12-2008 a las 02:51 +0100, Chema Cortes escribió:
> > El Tuesday 16 December 2008 23:33:28 Arnau Sanchez escribió:
> > > lasizoillo escribió:
> > > >> ¿Como podría hacer para contar el número de digitos ( números ) en una
> > > >> cadena de texto?
> > > >
> > > > In [1]: a = "asdfsadf234dfs234sdf45345"
> > > >
> > > > In [2]: len([x for x in a if x.isdigit()])
> > > > Out[2]: 11
> > >
> > > Correcto, pero se crea una lista intermedia que usa memoria sin necesidad.
> > >
> > > Una alternativa es usar generadores:
> > >  >>> sum(1 for c in a if c.isdigit())
> > >
> > > 11
> > 
> > Había pensado en esta alternativa, pero sus ventajas no compensa el liar más 
> > el código. Por lo general, este tipo de comprobaciones se hacen en la 
> > introducción de datos en formularios, por lo que las cadenas no suelen ser 
> > demasiado largas.
> > 
> > Pero si es por optimizar, ésta sería una mejor solución:
> > 
> >  sum(a.count(c) for c in "0123456789")
> > 
> > Son sólo 9 sumas, independientemente de la longitud de la cadena.
> 
> hablando de optimización.
> 
> ¿No será más rápido, y ocupará menos memoria hacer la suma "a mano"?
> x=0
> for i in a:
> 	if i>="0" and i<="9":
> 		x+=1

Esto hace algo parecido a lo que dijo Arnau, pero en más líneas.

------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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