Python 配列のスライシング #3

株式会社リュディアです。引き続き Python の配列のスライシングについてまとめていきたいと思います。

前回までの Python 配列のスライシング のまとめへのリンクは以下を参考にしてください。

前回までのまとめでステップが正負のいずれかであるかによってスライシングの指定方法が変わることについてまとめました。重要事項なので再度、以下のようにまとめておきます。

画像1

具体的なコードも再度以下につけておきます。しっかりと理解してから前に進んでください。

python_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

print(python_list[0:10:1])
print(python_list[0:10:-1])

print(python_list[10:0:1])
print(python_list[10:0:-1])
print(python_list[10::-1])

#
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
# []
# []
# ['j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b']
# ['j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
#

2つ目、3つ目の例でなぜ空リストになっているかわかりますね?なぜステップの正負によりスライシングの指定方法が変わっているかわかりますね?

では今日は負のスライシング指定です。Python ではスライシングを行う際のインデクスを負の数にすることも可能です。正のインデクスと負のインデクスの関係は以下のようになります。

画像2

では上の図のインデクスをイメージしながら具体的なコードを見てみましょう。

python_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

print(python_list[-2:-6])
print(python_list[-6:-2])

#
# []
# ['e', 'f', 'g', 'h']
#

頭に浮かべたイメージと合致しますか?この例ではステップを指定していないのでステップはデフォルトの 1 、つまり正の数です。そのためコロンの前後の数 start, stop は start < stop である必要があります。最初の例である [-2 : -6] は start < stop の関係を満たしていないので結果は空リストになっています。

次に負のステップを指定して同じスライシングを見てみましょう。

python_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

print(python_list[-2:-6:-1])
print(python_list[-6:-2:-1])

#
# ['i', 'h', 'g', 'f']
# []
#

予想通りでしょうか?ステップを -1 、つまり負の数にしたのでコロンの前後の数 start, stop が start > stop のときに有効となっています。

今回は負のインデクスの使い方についてまとめてみました。

Python 配列のスライシング に関するまとめの続きは以下からどうぞ。

では、ごきげんよう。



この記事が気に入ったらサポートをしてみませんか?