如何在Python中反转元组?

时间:2012-04-18 02:28:44

标签: python loops iteration tuples

  

可能重复:
  Traverse a list in reverse order in Python

这可能吗?没有必要到位,只是想找到一种方法来反转一个元组,这样我就可以向后迭代它。

3 个答案:

答案 0 :(得分:112)

有两种惯用方法可以做到这一点:

reversed(x)  # returns an iterator

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

由于元组是不可变的,因此无法在原位反转元组。


修改 基于@ lvc的注释,reversed返回的迭代器将等同于

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

即。它依赖于具有已知长度的序列,以避免必须实际反转元组。

至于哪个更有效率,我怀疑它是seq[::-1]如果你正在使用所有它并且元组很小,而reversed当元组很大时,在python中的性能通常是令人惊讶的,所以测量它!

答案 1 :(得分:14)

您可以使用reversed内置功能。<​​/ p>

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

如果你只想迭代元组,你可以直接使用reversed返回的迭代器,而不必再将其转换为元组。

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

答案 2 :(得分:6)

类似于反转列表的方式,即s [:: - 1]

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

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

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