Reversed はリストを取り、それを反転します。
スライス表記はリストを反復処理し、新しいリストを返します。
reversed
リストのスライス (ステッピングの有無にかかわらず) を呼び出すと、最初にスライスが作成され、次に反転されます。
たとえば、newL = reversed(L[0:len(L):2])
次と同じです。
M = L[0:len(L):2]
newL = reversed(M)
したがって、 と言うreversed(L[0:len(L)-1:2])
と、最初の要素から始まり、最後の要素を除く、L 内の他のすべての要素を含むリストに対して reversed が呼び出されます。
ちなみに、L[::2]
は と同じでL[0:len(L):2]
、L[:-1:2]
は と同じL[0:len(L)-1:2]
です。また、順番L[::-1]
がL
逆です。
この表記法は非常に強力です。
checkio([5, 8, 13, 27, 14])
を に戻したい場合[14, 13, 5, 27, 8]
は、いくつかの方法があります。
>>> L = [5, 8, 13, 27, 14]
>>> L[::-2] + L[-2::-2]
[14, 13, 5, 27, 8]
>>> L = [5, 8, 13, 27, 14]
>>> list(reversed(L))[::2] + list(reversed(L))[1::2]
[14, 13, 5, 27, 8]
>>> L = [5, 8, 13, 27, 14]
>>> list(itertools.chain(itertools.islice(reversed(L), 0, len(L), 2), itertools.islice(reversed(L), 1, len(L), 2)))
[14, 13, 5, 27, 8]
お役に立てれば