重複の可能性:
Python でリストを逆順にトラバースする
これは可能ですか?タプルを元に戻す方法を探して、逆方向に反復できるようにするだけです。
重複の可能性:
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