「リストの前から 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]