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

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

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

今回はステップを指定したスライシング、特に正負のステップを指定した場合のスライシングの扱いを見ていきます。以下のコードを見てください。

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

print(python_list[0:10:2])
print(python_list[1:10:3])

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

まず最初の例で見てみましょう。python_list[0 : 10 : 2] の 3 つ目の数字 2 がステップになります。ステップを指定しない場合のデフォルト値は 1 であり、この例ではステップ = 2 を指定しているので a, c, e, というように 2 つ毎にスライシングしています。次の例は開始インデクスが 1 で 3 つ毎にスライシングしています。図のイメージも以下につけておきます。

画像1

次にステップを負の数にした場合を見てみましょう。

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

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

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

最初の例では空リストが表示されています。[0 : 10] とスライシングを指定していますがステップが負の数であるためスライシングを指定する方向を逆にする必要があります。そのため[10 : 0 : -1] と指定することでスライシングが可能になります。ステップが正負いずれかによって、スライシングの指定方法の向きが変わるということですね。ある意味自然なことだと思うので受け入れやすいと思います。

今回の例でもう1つ重要事項は [10 : 0 : -1] の記述では要素 [0] は含まれないということです。要素 [0] まで含めたい場合には [10 : : -1] と指定する必要があります。

前回と今回のまとめでのポイントはステップが正負いずれかによって、スライシングを指定する方向が変わるということです。重要なことなのでしっかりと理解してください。

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

では、ごきげんよう。






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