[pyar] ¿Volvemos a empezar?

Pablo Gabriel Celayes pablocelayes en gmail.com
Mie Abr 30 19:16:31 ART 2014


El slice crea una lista nueva. De hecho, un atajo común para crear una
copia es hacer un slice sin parámetros:

In [1]: a = range(10)

In [2]: b = a[:]

In [3]: b[0] = 20

In [4]: b
Out[4]: [20, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [5]: a
Out[5]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



2014-04-30 19:02 GMT-03:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:

>
>
>
> 2014-04-30 18:14 GMT-03:00 Marcelo Fernandez <
> marcelo.fidel.fernandez en gmail.com>:
>
> El 30 de abril de 2014, 17:39, Fernando Pelliccioni
>> <fpelliccioni en gmail.com> escribió:
>> >
>> >
>> >
>> > 2014-04-30 17:03 GMT-03:00 fisa <fisadev en gmail.com>:
>> >
>> >> El día 30 de abril de 2014, 17:02, fisa <fisadev en gmail.com> escribió:
>> >> > El día 30 de abril de 2014, 16:59, Emiliano Dalla Verde Marcozzi
>> >> > <edvm en fedoraproject.org> escribió:
>> >> >> El 30 de abril de 2014, 16:48, Fernando Pelliccioni
>> >> >> <fpelliccioni en gmail.com>
>> >> >> escribió:
>> >> >>>
>> >> >>> Tiro una que puede parecer una boludés...
>> >> >>>    - Determinar si una secuencia de elementos es un palíndromo.
>> >> >>> Parece un ejercicio de introducción a la programación, ... ,
>> pero...
>> >> >>> si
>> >> >>> les va, la hacemos (sin medir tiempos, no hace falta) y después
>> vemos
>> >> >>> la
>> >> >>> utilidad.
>> >> >>
>> >> >>
>> >> >> Mi implementación de palindromo a la python por acá! :)
>> >> >>>>> cadena = 'asdsa'
>> >> >>>>> [c for c in cadena][::-1] == [c for c in cadena]
>> >> >> True
>> >> >>
>> >> >
>> >> > +1 a lo que dijo facu, pero no puedo dejar pasar este detalle: no
>> hace
>> >> > falta una list comprehension para eso! y lo va a hacer más lento al
>> >> > pedo :)
>> >> > Basta con:
>> >> >     cadena::-1 == cadena
>> >> >
>> >>
>> >> Typo! era:
>> >>      cadena[::-1] == cadena
>> >>
>> >>
>> >
>> > Que significa el [::-1] ?
>>
>> El tercer valor de un slice es el step, y -1 quiere decir que se lo
>> recorra al revés, digamos.
>>
>> "The slice of s from i to j with step k is defined as the sequence of
>> items with index x = i + n*k such that 0 <= n < (j-i)/k. In other
>> words, the indices are i, i+k, i+2*k, i+3*k and so on, stopping when j
>> is reached (but never including j). If i or j is greater than len(s),
>> use len(s). If i or j are omitted or None, they become “end” values
>> (which end depends on the sign of k). Note, k cannot be zero. If k is
>> None, it is treated like 1."
>>
>> https://docs.python.org/3/library/stdtypes.html#common-sequence-operations
>>
>> >>> foo = '0123456789'
>> >>> foo[::-1]
>> '9876543210'
>>
>> Saludos
>>
>
> Gracias muchachos por la explicación de slice.
>
> Leyendo la documentación, no me queda claro si el slice implica "recrear"
> el fragmento de la secuencia en otro pedazo de memoria o solo es una forma
> de iterar la secuencia original.
>
> ¿Existe en Python alguna forma de verificar si algun elemento esta siendo
> copiado?
> Lo pregunto, para poder verificar mi duda.
>
> Les escribo un ejemplo en C++ (ya que hay gente que sabe) para ilustrar lo
> que estoy preguntado.
> En C++ podría crear una clase, llamemosla Instrumentation, para verificar
> el comportamiento de los algoritmos...
>
> // Pseudo-C++, no es del todo correcto, solo quiero expresar la idea.
> class Instrumentation {
> Instrumentation( Instrumentation const& x ) // este es el
> Copy-Constructor, se ejecuta cada vez que quiero copiar un objeto...
>  {
> cout << "Se esta copiando un objeto del tipo Instrumentation\n"; //
> escribe en standard output
>  }
> };
>
> // entonces, suponganmos que tengo una sequencia de elementos
> vector<Instrumentation> v = { /* llenar con elementos */ }; // vector es
> un array redimensionable, elementos contiguos en memoria.
>
> // supongamos algo analogo al Slice de Python, la funcion slice(s, i, j,
> k) (no se todavia que deberia retornar)
> auto s = slice(v, ?, ?, -1);
>
> Si la funcion slice hace una copia de los elementos de mi secuencia...
> deberia ver en la salida estandar el string que puse en el Copy-Ctor.
> Si la funcion slice me retorna un Iterador (una forma de recorrer la
> secuencia), entonces, no hay copia.
>
> No se si me expliqué bien o estoy mareando al pedo (a veces me pasa).
>
> Saludos.
> Fernando.
>
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
 *ıl**l**ıl**l**ı* ρąβℓ๏ *ıllı**lı*
We are the problem. And we should provide the *solution*.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/7b978360/attachment.html>


More information about the pyar mailing list