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.