「リストの前から i 番目」「後ろから i 番目」を取得する
Python では list[0] でリストの先頭の要素を、 list[-1] でリストの最後の要素を取得することができます。
前から i 番目、後ろから i 番目の要素を取得する場合は、それぞれ list[i] 、 list[- i - 1] で取得することになります。
例:リストを反転する
例えば、 list.reverse() を使わずにリストを反転させるコードを書くと、次のようになります。
reverse.py
for i in range((len(list)) // 2):
list[i], list[- i - 1] = list[- i - 1], list[i]
ビット否定演算子を使い、シンプルに書く
リストの先頭の要素は0から始まるのに対し、リストの最後の要素は-1から始まり、絶対値が1つずれているため、 後ろから i 番目の要素の取得は、 list[- i - 1] または list[- (i + 1)] と書く必要があります。
ここでビット否定演算子を利用すると、後ろから i 番目の要素の取得を、 list[~i] とよりシンプルに書くことができます。
先ほどの例は、次のように書くことができます。
reverse.py
for i in range((len(list)) // 2):
list[i], list[~i] = list[~i], list[i]