[pyar] ¿Volvemos a empezar?

Cesar Ballardini cesar en ballardini.com.ar
Mie Abr 30 19:20:36 ART 2014


Me parece que Fernando preguntaba si se copiaban los elementos, no la lista.


El 30 de abril de 2014, 19:16, Pablo Gabriel Celayes <pablocelayes en gmail.com
> escribió:

> 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*.
>
> _______________________________________________
> 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
>



-- 
It's not enough to teach students to surf the Net, we must teach them to
make waves. My pedagogical theory is relate, create, donate, which
suggests that students work in teams, create ambitious projects and then
donate these to people who can use and build upon them. --Ben Shneiderman
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/ff77c811/attachment-0001.html>


More information about the pyar mailing list