On 26/12/12 18:40, kausdiv wrote: > Pues si, hay un modo pitoniano de escribir código. > > Python tiene una riqueza y una naturalidad al escribir que define su > propio modo de escribir. > Verás cuando yo empecé (y aún me pasa), mis programas parecían escritos > en java o c excepto que usaba lenguaje PY. > Pero cambiando algunas cosas podría pasar por java, etc. > > Para ilustrarlo mejor compara el código que ha escrito Chema con el mio > del principio: (aunque ambos usen formas distintas de conseguir los primos) > -----Codigo de Chema------ > > 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 > -----------El mio--------------- > def fprimos(n,x): > l=[] > for i in range(n,x): > isprime=1 > for k in range(2,i): > if i % k ==0 and i<>k: > isprime=0 > break > if isprime==1: > l.append(i) > return l > --------------------------------------- > > Como ves, hay una gran diferencia, a parte de estar más optimizado y > usar recursos propios de PY. > > Saludos. >
La mayor diferencia entre el codigo de Chema y el tuyo no está en que uno sea más o menos 'Pythonico'. La mayor diferencia está en el algoritmo, el empleó uno optimizado y muy conocido (criba de Erastotenes) y tú empleas un algoritmo de fuerza bruta. Si ignoraras los pares y buscaras solo hasta la raíz cuadrada mas uno, tu algoritmo seria mas optimo. Aunque lo mejor es siempre documentarse y buscar un algoritmo optimizado que para esta clase de problemas están mas que resueltos. De todos modos, empleando tu mismo método, se puede 'reconstruir' para hacerlo mas 'pythonico', pero en este caso no podemos compararlo con el de Chema, porque aunque el resultado es el mismo, empleáis caminos distintos. Yo te sugiero que la mejor manera de aprender el "estilo" de Python es leer mucho código Python y ver los ejemplos utilizados en algún buen libro sobre aprender Python. -- joe di castro http://joedicastro.com _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/