pyplot - title plt python
Cómo retroceder en python? (5)
Para invertir una cadena sin usar la reversed
o [::-1]
, intente algo como:
def reverse(text):
# Container for reversed string
txet=""
# store the length of the string to be reversed
# account for indexes starting at 0
length = len(text)-1
# loop through the string in reverse and append each character
# deprecate the length index
while length>=0:
txet += "%s"%text[length]
length-=1
return txet
Esta pregunta ya tiene una respuesta aquí:
- ¿Retroceder utilizando índices en Python? 13 respuestas
Estoy hablando de hacer algo como:
for(i=n; i>=1; --i) {
//do something with i
}
Puedo pensar en algunas formas de hacerlo en Python (crear una lista de range(1,n+1)
y revertirlo, usando while
y --i
, ...) pero me pregunto si hay una forma más elegante de hacerlo eso. ¿Esta ahí?
EDITAR: Algunos sugirieron que use xrange () en lugar de range () ya que range devuelve una lista mientras que xrange devuelve un iterador. Pero en Python 3 (que yo uso) range () devuelve un iterador y xrange no existe.
Todas estas tres soluciones dan los mismos resultados si la entrada es una cadena:
1.
def reverse(text):
result = ""
for i in range(len(text),0,-1):
result += text[i-1]
return (result)
2.
text[::-1]
3.
"".join(reversed(text))
range()
y xrange()
toman un tercer parámetro que especifica un paso. Entonces puedes hacer lo siguiente.
range(10, 0, -1)
Lo que da
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Pero para la iteración, en realidad debería usar xrange
. Asi que,
xrange(10, 0, -1)
Nota para los usuarios de Python 3: No hay funciones separadas de rango y xrange en Python 3, la primera fue reemplazada por la última.
def reverse(text):
reversed = ''''
for i in range(len(text)-1, -1, -1):
reversed += text[i]
return reversed
print("reverse({}): {}".format("abcd", reverse("abcd")))
for x in reversed(whatever):
do_something()
Esto funciona básicamente en todo lo que tiene un orden definido, incluidos los objetos y listas de xrange
.