Contar digitos en un string

Francesc Alted faltet en pytables.org
Jue Dic 18 17:08:09 CET 2008


A Thursday 18 December 2008, Chema Cortes escrigué:
> El 2008/12/17 Arnau Sanchez <pyarnau en gmail.com> escribió:
> > Chema Cortes escribió:
> >> 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.
> >
> > Sí, ¿pero no hay que considerar además que cada count() debe
> > recorrer completa la lista? aún así, seguro que ésta es la forma
> > más rápida, de largo (debido a que la iteración la hace en C en vez
> > de en Python).
>
> El count() se puede implementar fácilmente en C, usando tan sólo los
> registros del procesador como almacenamiento temporal; mientras que
> el uso de iteradores obliga a mantener un "contexto" de ejecución
> cuyo intercambio suele ser bastante costoso.
>
> Python sorprende por tener algunas funciones que están muy
> optimizadas; pero los iteradores siguen siendo, en general, una de
> las soluciones más escalables que podemos usar. En la cuentas de
> Francesc faltaría saber cuál fue el consumo de memoria de cada uno de
> los algoritmos.

Es que lo quieres todo :-)  Hombre, no sé cuanto chupa un generador, 
pero si descontamos estas lindezas, así a vuela-pluma, diría que el 
tuyo es óptimo también en el aspecto de consumo de memoria (sólo me 
sale que se consume un registro de un entero Python!).

-- 
Francesc Alted
_______________________________________________
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