Invertir un string en python

Sencillo ejemplo para invertir el orden de cualquier string en python, haciendo uso de recursividad:

def reverse(list):
	if len(list)==1:
		return list
	else:
		return list[-1]+reverse(list[:-1])

Enlace a pastebin

Edit:

Como bien comentan abajo, hay una manera mucho mas simple( Gracias 馃槈 )

def invertir(var):
聽 聽 聽 聽 return var[::-1]
Anuncios
Esta entrada fue publicada en Programaci贸n, Python. Guarda el enlace permanente.

12 respuestas a Invertir un string en python

  1. Juan dijo:

    Supongo que eres consciente que dentro de tan s贸lo diez a帽os todo esto ser谩 objeto de estudio de la arqueolog铆a tecnol贸gica. Y eso siendo optimista.

  2. Buenaventura Durruti dijo:

    algo m谩s simple quiz谩 sea:

    def invertir(var):
    return var[::-1]

  3. andres dijo:

    marinmenyo queras decir:

    list[::-1]
    esto te invierte el string list.

  4. marinmenyo dijo:

    Gracias, lo bueno de python es que cuanto mas aprendes mas te sorprendes con su extrema sencillez.

    Saludos!

  5. Mongo dijo:

    Y en Java hacer lo mismo es m谩s corto todavia, no? jajajjaaaa yo no entiendo a los que programan en Java, es una reverenda mierda, que se metan setter por setter en el orto.

  6. dul dijo:

    exactamente q significan los ::

    • marinmenyo dijo:

      En python tienes varios atajos cuando trabajas con listas.

      >>> a = [1,2,3,4,5]
      >>> a[0]
      1
      >>> a[2]
      3
      >>> a[-1]
      6

      Se ve r谩pido que como acceder a los elementos de uno en uno, si utilizas un indice negativo, empieza a contar desde el final de la lista

      >>> a
      [1, 2, 3, 4, 5, 6]
      >>> a[:]
      [1, 2, 3, 4, 5, 6]

      Esas dos llamadas pueden parecer iguales, pero a la hora de manipular listas, si las asignas a otras variables, veras la diferencia:

      >>> b = a
      >>> b
      [1, 2, 3, 4, 5, 6]
      >>> b[1] = 0
      >>> b
      [1, 0, 3, 4, 5, 6]
      >>> a
      [1, 0, 3, 4, 5, 6]

      Vemos que en el primer caso, b pasa a ser una referencia de a, por lo tanto, si modificas b tambi茅n modificas a

      >>> a = [1,2,3,4,5,6]
      >>> b = a[:]
      >>> b[1]=0
      >>> b
      [1, 0, 3, 4, 5, 6]
      >>> a
      [1, 2, 3, 4, 5, 6]

      Sin embargo, si queremos que b sea una copia, vemos que utilizando a[:] esto se solventa.
      Esto tambien sirve para hacer slicing:
      >>> a
      [1, 2, 3, 4, 5, 6]
      >>> a[2:3]
      [3]
      >>> a[2:4]
      [3, 4]
      Observamos que el slicing no muestra el ultimo indice indicado, es decir a[2:4] va del indice 2 al 4(sin mostrar el 4潞). Esto hay que tenerlo muy en cuenta pues cuando recorramos listas en sentido inverso puede llevar a confusiones.

      Y, aqui llega tu pregunta, el slicing admite un tercer parametro, el paso:
      >>> a[1:5]
      [2, 3, 4, 5]
      >>> a[1:5:2]
      [2, 4]
      Vemos que en este ultimo, avanza 2 cada vez que muestra el indice. Y si utilizamos un paso negativo
      >>> a[5:1:-1]
      [6, 5, 4, 3]
      Vamos del indice 5 hasta el 1, restando 1 a cada paso hasta llegar el indice 1 sin mostrarlo.

      O restando 2
      >>> a[4:1:-2]
      [5, 3]

      O simplemente recorremos toda la lista en sentido inverso
      >>> a[::-1]
      [6, 5, 4, 3, 2, 1]

      Saludos!

  7. Alejandro dijo:

    Muy buena explicaci贸n, soy nuevo en python, pero me gustar铆a seguir aprendiendo en este sitio.Gracias

  8. jama dijo:

    Funciona mejor si cambias la primera condici贸n a:
    if len(list)==0:
    return “”
    de esta forma esta contemplado el caso de lista vac铆a, en tu soluci贸n es un bucle infinito

Responder

Introduce tus datos o haz clic en un icono para iniciar sesi贸n:

Logo de WordPress.com

Est谩s comentando usando tu cuenta de WordPress.com. Cerrar sesi贸n / Cambiar )

Imagen de Twitter

Est谩s comentando usando tu cuenta de Twitter. Cerrar sesi贸n / Cambiar )

Foto de Facebook

Est谩s comentando usando tu cuenta de Facebook. Cerrar sesi贸n / Cambiar )

Google+ photo

Est谩s comentando usando tu cuenta de Google+. Cerrar sesi贸n / Cambiar )

Conectando a %s