[Python Tips]インデックスとスライスをマスターする

Pythonのシーケンス(リスト、文字列などのような順序のあるコンテナ)にはインデックスとスライスという参照方法が存在します。

インデックスの利用

インデックスとは

インデックスとはシーケンスの中の何番目に格納された値かを表すラベルのようなものです。
シーケンス変数名[インデックス] の形で利用し、シーケンス内の一つの要素を返します。
先頭の要素のインデックスが0、そこから末尾に向かって1ずつ大きくなります。末尾の要素のインデックスは(要素数-1)となります。
たとえば[“elem1”, “elem2”, “elem3”]というリストであれば、インデックスは”elem1″が0、 “elem2″が1 、”elem3″が2となります。

要素 elem1 elem2 elem3
index 0 1 2

また、インデックスとして存在しない数字を入力するとインデックスエラーが発生します。

a = ["elem1", "elem2", "elem3"]

print(a[0]) # elem1

print(a[2]) # elem3

print(a[10]) # IndexError

逆順のインデックス

インデックスは末尾から順に数えた指定も可能です。
後ろからのインデックスは末尾の要素が-1、そこから先頭に向かって1ずつ小さくなります。先頭の要素のインデックスは(-要素数)となります。

要素 elem1 elem2 elem3
index -3 -2 -1

正順同様、存在しないインデックスはIndexErrorが発生します。

a = ["elem1", "elem2", "elem3"]

print(a[-1]) # elem3

print(a[-3]) # elem1

print(a[-10]) # IndexError

スライスの利用

スライスとは

スライスとはインデックスを二つ指定し、シーケンスの一部を切り取って返す操作です。
シーケンス変数名[開始インデックス:終了インデックス] の形で利用し、切り取ったシーケンスを返します。
終了インデックスに該当する要素は切り取ったシーケンスに含まれないため、下記のようなインデックス指定となります。
また、開始インデックスは省略すると先頭から、終了インデックスは省略すると末尾までの範囲を切り取ります。

要素 elem1 elem2 elem3
slice
(index)
0 1 2 3
-3 -2 -1

また、スライスに入力するインデックスは存在しないものを入力してもインデックスエラーは発生しません。

a = ["elem1", "elem2", "elem3"]

print(a[1:2]) # ['elem2']

print(a[:-1]) # ['elem1', 'elem2']

print(a[2:10]) # ['elem3']

print(a[5:10]) # []

スライスのステップ

スライスには開始、終了インデックスに加えてステップを決めることができます。
シーケンス変数名[開始インデックス:終了インデックス:ステップ] の形で利用し、切り取ったシーケンスを返します。

a = [1, 2, 3, 4, 5, 6, 7, 8]

print(a[1:6:2]) # [2, 4, 6]

print(a[::-1]) # [8, 7, 6, 5, 4, 3, 2, 1]

スライス操作を使いこなせばシーケンスからのデータの削除や更新、抽出を容易に行うことができる場合があります。
うまく使いこなしてどんどんデータ解析に活かしましょう!

以下のコードの実行結果は次のうちどれでしょう?
a = [1, 2, 3, 4, 5]
print(a[::-2])
Python1
{{quiz}} {{maxScore}}問中{{userScore}}問正解!
{{title}}
{{image}}
{{content}}

>Python TIPSのほかの記事を読む
>開発者ブログのほかの記事を読む

ライター:H.I