[Python-es] Pythoniano y c niano

kausdiv kausdiv en gmail.com
Mie Dic 26 18:31:38 CET 2012


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
> <kelertxiki en gmail.com> 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
>
>
>
>



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