可能性のある複製:
Pythonでリストを逆順にトラバースする
これは可能ですか?タプルを逆方向に反復できるように、タプルを逆にする方法を探しているだけで、所定の場所にある必要はありません。
これを行うには、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でのパフォーマンスはしばしば驚くので、測定してください!
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
リストを逆にする方法と同様、つまり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