Possible Duplicate:
Traverse a list in reverse order in Python
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.
Since tuples are immutable, there is no way to reverse a tuple in-place.
Method #1 : Using set() + tuple() This is the most straight forward way to remove duplicates. In this, we convert the tuple to a set, removing duplicates and then converting it back again using tuple().
In Python, you can reverse the items of lists ( list ) with using reverse() , reversed() , and slicing. If you want to reverse strings ( str ) and tuples ( tuple ), use reversed() or slice.
31.2 Python Collection TypesTuples allow duplicate members and are indexed. Lists Lists hold a collection of objects that are ordered and mutable (changeable), they are indexed and allow duplicate members.
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!
You can use the reversed
builtin function.
>>> x = (1, 2, 3, 4) >>> x = tuple(reversed(x)) >>> x (4, 3, 2, 1)
If you just want to iterate over the tuple, you can just use the iterator returned by reversed
directly without converting it into a tuple again.
>>> for k in reversed(x): ... print(k) ... 4 3 2 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With