[pyar] �Volvemos a empezar?
Fernando Pelliccioni
fpelliccioni en gmail.com
Mie Abr 30 19:02:08 ART 2014
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.
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/7801518d/attachment.html>
More information about the pyar
mailing list