如何在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