如何在Python中反转元组?

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

这可能吗? 不必到位,只是寻找一种方法来扭转元组,所以我可以反向迭代。

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

 reversed(x) # returns an iterator 

要么

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

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


编辑:build立在@ lvc的评论上,通过reversed返回的迭代器将相当于

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

即它依赖于具有已知长度的序列来避免实际上反转元组。

至于哪一个更有效率,如果你使用了所有的元组,而且元组很小,并且在元组很大时reversed ,但是在python中的性能是经常的令人惊讶,所以衡量它!

您可以使用reversed内置函数。

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

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

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

类似于你将会反转列表的方式,即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