
「Pythonでどうやってスライスするの?」
「そもそもPythonのスライスってなに?」
とお悩みではありませんか。
Pythonのスライスとは、リスト、文字列、タプルなどのデータから要素を取り出すために用意されている機能です。
本記事では、Pythonのスライスのやり方や応用について網羅的に解説していきます。
最後まで読めば、リストや文字列などから自在に要素が抽出できるようになるでしょう。
本記事の信頼性

以下でお悩みの方に読んで欲しい
Pythonでアプリ開発!
PythonでWebアプリを開発したいと考えている方は、Udemyの講座の『爆速で5つのPython Webアプリを開発』を受講しましょう。
おすすめしている講座では、Pythonだけで5つのアプリを開発でき、APIなどのアプリ開発の周辺知識、公開する方法まで網羅的に解説されています。
クリックしてもセールになっていない時は、「Streamlit」で検索し直してみましょう!
\セール情報を確認する!/

それでは本編です!
Pythonのスライスとは
Pythonのスライスとは、リスト、文字列、タプルなどのデータから要素を取り出すために用意されている機能です。
スライスを使用することで、特定の要素や逆順、何個かおきに取り出すこともできます。
例えば、[1, 2, 3, 4, 5, 6]
とリストがあった場合、[2, 4, 6]
と偶数番目だけ取り出すことなどが可能です。
Pythonのスライスの使い方

この章では、Pythonのスライスの基本的な使い方について解説していきます。
- 始める点と終わる点の指定
- ステップ(何個おき)かの指定
スライスでは、始点や終点、何個おきに取り出すかを簡単に選択できるのです。
それぞれ解説していきます。
始める点と終わる点の指定
Pythonのスライスでは、リストや文字列などから特定の範囲の要素を取り出せます。
基本的な形は[start:stop]
で、start
はスライスの開始位置で、stop
は終了位置です。
以下のようなコードが、スライスを実装する例になります。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[1:4] # 結果は [1, 2, 3]
例えば、my_list[1:4]
とすると、my_list
の2番目から4番目までの要素が取得できます。
始点を1と指定して、2番目から要素が取り出されるのは、リストの開始が「0」から始まるからです。
例の場合、4と指定していますが、終点は「指定したインデックス(リストでの数え)-1」までしか取得されないので注意しましょう。

覚えるのが苦手だという人は、リストを1から数えた時の指定した番号まで要素が取得できると覚えましょう!
また、スライスの始点や終点を省略することもできます。
始点を省略する場合、以下のようにコードを書くと、最初からスライスされます。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[:4] # 結果は [0, 1, 2, 3]
終点を省略する場合も、始点の省略の書き方と似ているので、あわせて覚えましょう。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[1:] # 結果は [1, 2, 3, 4, 5]
始点と終点の省略の違いを比べると以下のように表せます。
始点:左側がない | my_list[:4] |
終点:右側がない | my_list[1:] |
また、負のインデックスを使用することで、リストの末尾から要素を取得できます。
例えば、my_list[-3:-1]
とすると、末尾から3番目から2番目までの要素が取得できます。
終点に「-1」と記述してしまうと、末尾は取得できないので注意です。
ステップ(何個おき)かの指定
Pythonのスライスのステップは、取得する要素の間隔を指定できます。
基本的な形は[start:stop:step]
です。step
に2を指定すると、1つ飛ばしで要素が取得されます。
先ほどと同じように、my_list
を用いて、ステップ関数を説明していきます。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[0:5:2] # 結果は [0, 2, 4]
まず、終点がリストのインデックスで5が指定されているため、my_list
内の4まで取得されます。
そして、step
に2を指定しているため1つ飛ばしで要素が取得されることから、my_list
の1番目、3番目、5番目の要素が取得できます。
ステップを上手く使うことで、for文などでも1つ飛ばしで要素を渡すことが可能です。
スライスの応用的な使い方

この章では、Pythonのスライスの応用的な使い方について詳しく解説します。
- 2次元の配列(リスト)をスライスする
- リストを逆順にする
- データフレームの行をスライスする
どの応用も、利用頻度が髙いので、ぜひ参考にしてください。
2次元の配列(リスト)をスライスする
Pythonでは、2次元の配列(リスト)もスライスでき、基本的な形は[リスト_start:リスト_stop]
です。
リストの中にリストが入っているので、番号を指定すると、それぞれリストが出力されます。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
sliced_matrix = matrix[0:2] # 結果は [[1, 2, 3], [4, 5, 6]]
以上のコードから分かるように、普通のリストのスライスと同じように指定できます。

それぞれの数値がリスト単位になっただけだと考えましょう。
リストの中のリストをスライスには、以下のようにコードを記述すると可能です。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
sliced_matrix = matrix[0][0:2] # 結果は [0, 2, 4]
matrix[0]
と指定することで、一番目のリストだけを取り出し、そのリストに対してスライスを更にしています。
このように、スライスを2重にすることで、リストの中のリストを取り出せるのです。
それぞれのリストの1番目だけ取得することも、内包表記を利用することで可能です。Q&Aにて解説しております。
リストを逆順(後ろから)にする
Pythonのスライスを応用することで、リストを逆順にすることができます。
リストを逆順にするには、以下のようにスライスのstep
に-1を入れます。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[5:0:-1] # 結果は [5, 4, 3, 2, 1]
以上のようにコードを記述することで、リストを逆順から取得できます。
[5:0]
と、始点が終点より後ろのリストの要素を指定しているので、注意してください。
また、リストを逆順にしてしたい場合は、以下のようにコードを記述しましょう。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = my_list[::-1] # 結果は [5, 4, 3, 2, 1, 0]
以上のように、スライスのstep
を工夫することで、逆順にスライスできます。

便利な機能ですので、ぜひ覚えておきましょう。
データフレームの行をスライスする
Pythonでデータフレームを扱う時に用いるライブラリであるPandasのデータフレームもスライスできます。
基本的な形はdf[start:stop]
です。例えば、df[10:20]
とすると、10行目から19行目までのデータが取得できます。
# pandasとdatasetsライブラリをインポート
import pandas as pd
from sklearn.datasets import load_iris
# Irisデータセットをロード
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# 最初の5行を表示(スライス)
first_five_rows = df[10:20]
print(type(first_five_rows))
first_five_rows.head()
以上のコードが、サンプルデータのインポートから、データフレームのスライスまで行ったコードです。
このスライスの方法では行に対してしか行えず、スライスした後もデータフレーム型であるのが特徴になります。
loc
などの関数を使うことで、データフレームの特定要素にアクセスすることも可能です。
特定行だけ取り出したい場合はよくありますので、押さえておきましょう。
Q&A|Pythonのスライスで「よくある質問」に回答!

最後に、Pythonのスライスに関するよくある質問にお答えします。
- Q1. 2次元配列でそれぞれのリストの特定要素だけ取得できる?
- Q2. スライスで条件つけられる?
- Q3. スライスが使えるのはリストだけ?
それぞれ回答していきます。
Q1. 2次元配列でそれぞれのリストの特定要素だけ取得できる?
2次元配列でそれぞれのリストの特定要素だけ取得できる?


内包表記を使えば可能です!
内包表記を用いることで、以下のようにコードを記述すると、それぞれのリストの特定要素だけ取り出せます。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
sliced_column = [row[1] for row in matrix] # 結果は [2, 5, 8]
このコードでは、for文でそれぞれのリストを取り出して、そのリストに対してスライスを行っています。
そのため、それぞれのリストの要素を2つずつ取ってくることも可能です。
Q2. スライスで条件つけられる?
スライスで条件つけられる?


if文とfor文を組み合わせることで可能です!
以下のように、内包表記でfor文とif文を組み合わせることで、条件を設けられます。
my_list = [0, 1, 2, 3, 4, 5]
sliced_list = [x for x in my_list[1:5] if x > 2] # 結果は [3, 4]
このコードでは、for文の所でリストで特定の範囲を抽出し、そこから条件でさらに絞り込んでいる形です。
条件までつけられると一気にできることが広がるので、ぜひ試してみてください。
Q3. スライスが使えるのはリストだけ?
スライスが使えるのはリストだけ?


リストだけでなく、文字列やタプル、データフレームなどに使えます!
例えば、文字列のスライスは以下のようにコードを記述できます。
my_string = "abcdef"
sliced_string = my_string[2:5] # 結果は "cde"
文字列のスライスでは、1文字ずつがリストの1要素のように扱われると考えましょう。
そのため、リストと大きく設定方法は変わりません。
まとめ
以上がPythonのスライスについて解説してきました。
Pythonのスライスとは、リスト、文字列、タプルなどのデータから要素を取り出すために用意されている機能で、非常に便利です。
スライスでは、以下のような項目を設定します。
- 始める点と終わる点の指定
- ステップ(何個おき)かの指定
また、応用として以下のようなことにも利用可能です。
- 2次元の配列(リスト)をスライスする
- リストを逆順にする
- データフレームの行をスライスする
以上のことに加えて、内包表記などを組み合わせる方法や文字列などのスライスについてもQ&Aで回答しております。
- Q1. 2次元配列でそれぞれのリストの特定要素だけ取得できる?
- Q2. スライスで条件つけられる?
- Q3. スライスが使えるのはリストだけ?
あわせて覚えておくとよいでしょう。
もし、
「Python勉強してるけど、Webアプリ開発もしてみたい...」
「そもそもPythonでアプリ開発できるのか知りたい...」
という方は、僕も受講したUdemyの『爆速で5つのPython Webアプリを開発』がおすすめです!
詳細が気になる方は以下のボタンをクリックの上、ご確認ください。
\セール情報を確認する!/