Precisamente a esa forma de código y las recomendaciones que has hecho, es lo que creo que marca la diferencia entre un programa pytoniano y uno más estilo c, java, etc. Muy bueno el código que has puesto. Refleja lo que quería decir y de camino se aprende. !!

Pongo la versión que sería "comparable" con ésta (menos optimizada que
la que usaba sets):

def fprimos(n,x):

   def isprime(n):
     return all(n%k!=0 for k in range(2,n))

   return [x for x in range(n,x) if isprime(x)]

en una sóla línea:

def fprimos(n,x):
   return [x for x in range(n,x) if all(n%k!=0 for k in range(2,n))]



Algunas recomendaciones:

1) evitar almacenar estados intermedios (fuera contadores y variables
intermedias)
2) huir del list.append() (usar las "compresiones" en su lugar)
3) la mejor optimización es saber usar los recursos del lenguaje (sum,
max/min, all/any, sorted, zip, reduce, itertools, collections, ...)
4) evitar convertir los interadores a listas hasta el último momento
(usar 'itertools')





_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a