如何在 Python 中反转元组?

2022-01-19 00:00:00 python loops iteration tuples

问题描述

可能重复:
在Python中逆序遍历列表

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

Is this possible? Doesn't have to be in place, just looking for a way to reverse a tuple so I can iterate on it backwards.


解决方案

有两种惯用的方法:

reversed(x)  # returns an iterator

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

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

Since tuples are immutable, there is no way to reverse a tuple in-place.

基于@lvc 的注释,由 reversed 返回的迭代器将等效于

Building on @lvc's comment, the iterator returned by reversed would be equivalent to

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

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

i.e. it relies on the sequence having a known length to avoid having to actually reverse the tuple.

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

As to which is more efficient, i'd suspect it'd be the seq[::-1] if you are using all of it and the tuple is small, and reversed when the tuple is large, but performance in python is often surprising so measure it!

相关文章