pyplot python iteration range

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í:

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 .