[pyar] ¿Volvemos a empezar?

Fernando Pelliccioni fpelliccioni en gmail.com
Mie Abr 30 19:38:52 ART 2014


2014-04-30 19:30 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:

> no es copy-on-write en cpython, hoy (pero otra implementación/versión
> podría serlo). Es shallow-copy (eso es implementation independent, es parte
> de la semántica del lenguaje)
>
> D.
>


Buen dato! Gracias.
Entonces la especificación de Python lo deja a criterio de la
implementación en particular. (¿Está escrito o es de saber popular?)
Pero... al menos ¿podemos asegurar que es Shallow-Copy? ¿O ni siquiera?
O es posible que Slice "retorne" un "objeto" capaz de iterar sobre la lista?



>
>
> 2014-04-30 15:28 GMT-07:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:
>
>
>>
>>
>> 2014-04-30 19:20 GMT-03:00 Cesar Ballardini <cesar en ballardini.com.ar>:
>>
>> Me parece que Fernando preguntaba si se copiaban los elementos, no la
>>> lista.
>>>
>>>
>> Veo dos opciones.
>>
>> - Se crea una nueva lista, conteniendo punteros o referencias a la lista
>> anterior  (shallow-copy)
>> - Se crea una nueva lista, conteniendo copias de los elementos (deep-copy)
>>
>> Según la respuesta de Pablo, creo que es DeepCopy, pero me hace dudar el
>> CopyOnWrite...
>> Soy muy desconfiado con estas cosas y me gusta probarlas por mi cuenta o
>> leerlo bien en la especificación (cosa que no hice porque me dio vagancia
>> leer toda la pagina, opté por el atajo de consultarles a ustedes)
>>
>>
>>
>>
>>>
>>> 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
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>
> _______________________________________________
> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/1324851a/attachment-0001.html>


More information about the pyar mailing list