Saltar al contenido

¿Cómo invertir tuplas en Python?

Posterior a de nuestra prolongada selección de información dimos con la respuesta esta dificultad que presentan ciertos de nuestros lectores. Te ofrecemos la solución y esperamos resultarte de gran apoyo.

Solución:

Hay dos formas idiomáticas de hacer esto:

reversed(x)  # returns an iterator

o

x[::-1]  # returns a new tuple

Dado que las tuplas son inmutables, no hay forma de invertir una tupla en el lugar.


Editar:
Basándose en el comentario de @lvc, el iterador devuelto por reversed sería equivalente a

def myreversed(seq):
    for i in range(len(x) - 1, -1, -1):
        yield seq[i]

es decir, depende de que la secuencia tenga una longitud conocida para evitar tener que invertir la tupla.

En cuanto a cuál es más eficiente, sospecho que sería el seq[::-1] si lo está usando todo y la tupla es pequeña, y reversed cuando la tupla es grande, pero el rendimiento en python suele ser sorprendente, ¡así que mídalo!

Puedes usar el reversed función incorporada.

>>> x = (1, 2, 3, 4)
>>> x = tuple(reversed(x))
>>> x
(4, 3, 2, 1)

Si solo desea iterar sobre la tupla, puede usar el iterador devuelto por reversed directamente sin convertirlo en una tupla de nuevo.

>>> for k in reversed(x):
...     print(k)
... 
4 3 2 1

Similar a la forma en que invertiría una lista, es decir, s[::-1]

In [20]: s = (1, 2, 3)

In [21]: s[::-1]
Out[21]: (3, 2, 1)

y

In [24]: for i in s[::-1]:
   ....:     print i
   ....:
3
2
1

valoraciones y reseñas

Tienes la opción de añadir valor a nuestro contenido añadiendo tu experiencia en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *