Pythonで扱うリスト(List型)は、データを複数格納できるとても便利な型です。
この記事では、Pythonのリストを任意の位置で分割する方法、いわゆる「スライス(スライシング)」の基本から応用まで、初心者向けに丁寧に解説していきます。
リストのスライスとは?
リストに対して「一部の要素を取り出す」操作のことをスライスと呼びます。
例えば、以下のようなリストがあったとします:
scores = [55, 70, 90, 80, 45]
この中から2番目から4番目の要素(70, 90, 80)だけを取り出したいとき、どうすればよいでしょうか?
そのときに活躍するのが「スライス構文」です。
スライス構文の基本形
#分割の基本的な型
変数名[Start:End:Step]
項目 | 説明 |
---|---|
Start | 取り出しを始める位置(0から始まる) |
End | 取り出しを終える位置(この位置の要素は含まれない) |
Step | 何個おきに取り出すか(省略可能・デフォルトは1) |
ポイント:Endインデックスは「含まれない」という点に注意しましょう!
スライスの基本例
指定した範囲を取り出す
test = [55, 70, 90, 80, 45]
print(test[2:5])
結果
[90, 80, 45]
解説:インデックス2から4までの要素が取得されます。インデックス5の値は含まれません。
ステップを指定して取り出す
test = [55, 70, 90, 80, 45]
print(test[::2])
結果
[55, 90, 45]
解説:インデックス0からスタートして、2つおきの要素を取り出します。
先頭や末尾を省略したスライス
test = [55, 70, 90, 80, 45]
print(test[:2])
print(test[4:])
結果
[55, 70]
[45]
解説:
[:2]
は、先頭からインデックス2(含まない)までを取得[4:]
は、インデックス4以降(最後まで)を取得
マイナスインデックスを使った取り出し
Pythonのリストでは、マイナスのインデックスを使うと、末尾から数えることができます。
test = [55, 70, 90, 80, 45]
print(test[-2:])
結果
[80, 45]
解説:-2
は末尾から2番目を意味し、そこから最後までの要素が取得されます。
よくあるエラーと注意点
エラー・落とし穴 | 解説例 |
---|---|
インデックスが範囲外でもエラーにならない | test[3:10] → 要素が5個しかなくても [80, 45] と返ってくる |
終了インデックスが含まれない | test[0:2] は、インデックス0と1の要素のみを取得(2は含まれない) |
空のリストが返ってくることがある | test[4:2] のように、開始が終了より後になると [] になる |
ステップが0だとエラー | test[::0] → ValueError: slice step cannot be zero になります |
まとめ:スライスの活用ポイント
操作内容 | スライス記法 | 結果 |
---|---|---|
最初の2つを取得 | test[:2] | [55, 70] |
最後の2つを取得 | test[-2:] | [80, 45] |
全ての要素を逆順に取得 | test[::-1] | [45, 80, 90, 70, 55] |
偶数番目の要素を取得 | test[::2] | [55, 90, 45] |