El día 7 de agosto de 2013 14:30, Kiko <kikocorre...@gmail.com> escribió:
> mira también rot90, fliplr, flipud... > > http://docs.scipy.org/doc/numpy/reference/routines.array-manipulation.html#rearranging-elements Los había mirado, pero son funciones para >= 2-d. No veo cómo usarlas con listas unidimensionales. > > El 07/08/13, Chema Cortes <pych...@gmail.com> escribió: >> El día 6 de agosto de 2013 16:38, Daπid <davidmen...@gmail.com> escribió: >>> 2013/8/6 Chema Cortes <pych...@gmail.com>: >> >>> Por otro lado, si la operación de inversión no se hace sobre el array, >>> sino sobre una copia, se gana tiempo: >>> >>> In [31]: l2 = l.copy() >>> >>> In [32]: %timeit l[i+1:j+1]=l2[j:i:-1] >>> 10000 loops, best of 3: 101 us per loop >> >> He mirado un poco mejor el funcionamiento de los arrays en numpy. Los >> troceos no crean nuevos arrays, sino lo que llama "vistas" ("views") >> (a excepción de los "fancy indexing" de numpy). Como las vistas están >> enlazadas con el objeto original, los cambios en una vista se efectúan >> directamente sobre el objeto original de forma eficiente. >> >> Creo que usaré los arrays de numpy para operaciones con listas >> grandes. También necesitaba hacer rotar la lista, cosa que veo que >> puede hacer con np.roll, aunque no es tan eficiente como deque >> .rotate() que realiza la operación "in-place". >> >> Como curiosidad, había descartado algunas pruebas bizarras con deque, >> pero muestra lo increiblemente rápido que puede llegar a ser: >> >> d=deque(l) >> >> %timeit d.rotate(-i-1);d.extendleft([d.popleft() for _ in >> range(j-i)]);d.rotate(i+1) >> 10 loops, best of 3: 29.8 ms per loop >> >> Es la misma operación que l[i+1:j+1]=l2[j:i:-1], primero rotando la >> lista hacia la izquierda, añadiendo la lista invertida al principio y >> volviendo a rotar hacia la derecha para mantener el mismo orden. >> >> >> -- >> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >> http://ch3m4.org/blog >> Buscador Python Hispano: http://ch3m4.org/python-es >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/