Muchas gracias a todos. He aprendido mucho.
Chema, precisamente me refería a esa forma de escribir en python. Gracias.

Una pregunta: ¿ como hacéis para medir el tiempo de ejecución de una función ? Sabia hacerlo en Pascal pero no en PY.

Y una sugerencia: ¿ que os parece organizar un concurso sobre un el programa py más rápido en calcular los primeros 1.000.000 de número primos ?

¿ Recordáis hace años aquellos concursos en c y ensamblador de 3Kb. lo que conseguían hacer ? Yo tenia uno que recreaba un paisaje marciano y solo ocupaba 3kb. (creo recordar)

Bueno, de nuevo muchas gracias a todos.




El 26/12/2012 17:10, Chema Cortes escribió:
El día 26 de diciembre de 2012 15:11, Ander Garmendia
<[email protected]> escribió:
Buenas,
soy nuevo en el universo python y llevo un tiempo en esta lista y esta
pregunta me ha llamado la atención.
¿ Hay un modo "pythonico" de hacer las cosas ?
Viendo las soluciones solo veo algoritmos adaptados a las estructuras de
control de python.
¿ Es cosa mía o se me esta pasando algo ?
Yo dirías que estamos viendo un algoritmo típico de programación
imperativa y no hay mucho más qué hacer.

En cambio, si usáramos la Criba de Eratóstenes para obtener los
primos, entonces podíamos usar cosas tan pitónicas como los sets con
los que se puede optimizar mejor nuestro código (y si hacer una sola
división):

def primes(n):
     res = set(range(1, n+1))
     for i in xrange(2, n+1):
         if i in res:
             res -= set(xrange(i+i, n+1, i))
     return res


Si aún quieres que sea más distinto de lo que se ve en C, se puede dar
una vuelta más de tuerca y dejarlo así de extraño:

def primes(n):

     criba = {1,2}|set(range(3,n+1,2))
     seq = (set(range(i+i,n+1,i)) for i in xrange(3,n+1,2) if i in criba)

     for x in seq:
         criba -= x

     return criba





_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a