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