[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