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']