如何扭转在Python元组? [重复](How to reverse tuples in Pyt

2019-06-23 17:52发布

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

这可能吗? 不必到位,只是在寻找一种方式来扭转一个元组,所以我可以在它向后遍历。

Answer 1:

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

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表现往往令人惊讶所以衡量它!



Answer 2:

您可以使用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


Answer 3:

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


文章来源: How to reverse tuples in Python? [duplicate]