循环-如何在Python中反转元组?

可能重复:
在Python中以相反顺序遍历列表

这可能吗? 不必就位,只需寻找一种方法来反转元组,以便我可以向后迭代。

Joan Venge asked 2019-11-08T11:08:38Z
3个解决方案
117 votes

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

reversed(x)  # returns an iterator

要么

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

由于元组是不可变的,因此无法就地反转元组。


编辑:以@lvc的评论为基础,seq[::-1]返回的迭代器将等效于

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

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

至于哪种效率更高,我怀疑如果您都使用它并且元组很小,则为seq[::-1],而当元组较大时,则为reversed,但是在python中的性能通常令人惊讶,因此进行测量!

tobyodavies answered 2019-11-08T11:09:26Z
16 votes

您可以使用reversed内置函数。

>>> 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
Praveen Gollakota answered 2019-11-08T11:09:58Z
6 votes

类似于您要反转列表的方式,即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
Levon answered 2019-11-08T11:10:26Z
translate from https://stackoverflow.com:/questions/10201977/how-to-reverse-tuples-in-python