84

重複の可能性:
Python でリストを逆順にトラバースする

これは可能ですか?タプルを元に戻す方法を探して、逆方向に反復できるようにするだけです。

4

3 に答える 3

158

これを行う慣用的な方法が 2 つあります。

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 のパフォーマンスは驚くべきことが多いので、測定してください!

于 2012-04-18T02:30:34.003 に答える
25

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
于 2012-04-18T02:30:46.180 に答える
7

リストを反転する方法と同様、つまり 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
于 2012-04-18T02:31:19.853 に答える