How to reverse tuples in Python?

iteration, loops, python, tuples

Solution

There are two idiomatic ways to do this:

reversed(x)  # returns an iterator

or

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

Since tuples are immutable, there is no way to reverse a tuple in-place.

Edit: Building on @lvc's comment, the iterator returned by `reversed` would be equivalent to

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

i.e. it relies on the sequence having a known length to avoid having to actually reverse the tuple.

As to which is more efficient, i'd suspect it'd be the `seq[::-1]` if you are using all of it and the tuple is small, and `reversed` when the tuple is large, but performance in python is often surprising so measure it!

Problem

Is this possible? Doesn't have to be in place, just looking for a way to reverse a tuple so I can iterate on it backwards.

Original source

Related problems