Python: 範囲指定してリストやタプルの要素を取り出す

Pythonで範囲を指定してリストやタプルの要素を取り出す(スライスする)場合は、 ブラケット演算子[]を使ってインデックスの範囲を指定します。 使い方はリストもタプルも同じです。

書式
リストまたはタプル[開始インデックス:終了インデックス + 1]

# ステップを指定
リストまたはタプル[開始インデックス:終了インデックス + 1:ステップ]

「開始インデックス」と「終了インデックス + 1」の間をコロン「:」で区切り、 さらにコロン「:」で区切ってステップ(間隔)を指定することもできます。 リスト・タプルの先頭要素のインデックスは「0」です。

リストの範囲指定の具体的なコードは次の通りです。 最初のprint文は「先頭から3番目まで」、 次のprint文は「2番目から4番目まで」を取り出しています。

li  = ["a", "b", "c", "d", "e"]

# 先頭から3番目まで
print(li[0:3])  # ['a', 'b', 'c']

# 2番目から4番目まで
print(li[1:4])  # ['b', 'c', 'd']

タプルも同じように記述します。

# タプル
t = (10, 20, 30, 40, 50)

print(t[0:3]) # (10, 20, 30)

print(t[1:4]) # (20, 30, 40)

インデックスを省略した場合

最初のインデックスを省略した場合は「0」指定と同じになり、 終了のインデックスを省略した場合は「len(リスト・タプル)」指定と同じになり、 最後の要素まで取得します。

次のサンプルコードは、リストを使ったインデックスの省略例です。 タプルも記述は同じなので以後省略します。

li  = ["a", "b", "c", "d", "e"]

# li[0:3] と同じ
print(li[:3])  # ['a', 'b', 'c']

# li[1:len(li)] と同じ
print(li[1:])  # ['b', 'c', 'd', 'e']

インデックスにマイナスの値を指定する

インデックスにマイナスの値を指定することも可能です。 その場合、末尾要素からの要素指定となります。 「-1」が末尾の要素で、「-2」が末尾から2番目の要素です。

li  = ["a", "b", "c", "d", "e"]

# 最後の3要素
print(li[-3:])  # ['c', 'd', 'e']

# 最後から3番目と2番目
print(li[-3: -1]) # ['c', 'd']

ステップ数(間隔)を指定する

要素を取り出すステップ数(間隔)を指定することもできます。 次のように「終了インデックス + 1」の次にステップ数を指定します。

リストまたはタプル[開始インデックス:終了インデックス + 1:ステップ数]
li  = ["a", "b", "c", "d", "e", "f", "g"]

# ステップ数を指定
print(li[::2])  # ['a', 'c', 'e', 'g']

# 2番目の文字からステップ数2で取り出す
print(li[1::2])  # ['b', 'd', 'f']
Python