Pythonのスライスの使い方【初心者向け】

初心者向けにPythonのスライスの使い方について解説しています。スライスとはシーケンスから要素を部分的に取得するものです。スライスの基本の書き方と実行結果を例を見ながら覚えていきましょう。実際にソースコードを書いて説明しています。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Pythonのスライスの使い方について解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのPythonオンライン講座の内容をもとにしています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

スライスの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

スライスとは

スライスとは、シーケンスから一部分を取り出したり値を代入したりする機能です。シーケンスとは複数の要素をまとめて扱うことができる型の総称で、他のプログラミング言語では配列と呼ばれるものです。

Python のシーケンスには以下の種類があります。

  • リスト(list)
  • タプル(tuple)
  • レンジ(range)
  • 文字列(string)

この他にも、NumPy という数値計算のライブラリの ndarray 型(NumPy配列型)などでもスライスを行うことができます。

 

スライスの使い方(リストの要素を操作する方法)

スライスの書き方は以下の通りです。

シーケンス[開始:終了:ステップ]
  • シーケンス:スライスを適用する変数などを指定します。
  • 開始:取り出しを開始する位置です。省略すると先頭の要素を指定します。先頭は0から始まります。マイナスの値を指定すると末尾から数えた位置を指定する意味になります。
  • 終了:取り出しを終える位置です。省略すると最後の要素まで取り出しを行います。終了-1までの要素が取り出されることに注意してください。こちらもマイナスの値を指定すると末尾から数えた位置を指定する意味になります。
  • ステップ:要素を取り出す間隔です。省略すると既定値の1が設定されます。ステップにマイナスの値を指定すると末尾から要素を取り出します。

開始、終了、ステップの全ての省略することはできません。開始を省略して終了を指定するような場合 、以下のように「:」を明記します。

シーケンス[:終了]

指定した条件に合致しない場合、空のシーケンスが返ります。

 

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に書いてみよう

今回のサンプルプログラムでは、リストをもとにスライスの使い方を確認します。プログラムは Python インタプリタで入力していきます。まずはシーケンスを準備しましょう。

mylist = list(range(0, 10))

mylist は list 型の変数となり、 0から99の整数が要素として格納されています。それではスライスの使い方を確認していきます。はじめは開始と終了を指定する方法です。

mylist[10:20]

実行結果は以下のようになります。要素の10番目から19番目が取得されました。終了-1までの要素が取り出されることに注意してください。

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 

開始だけを指定すると、特定の要素が取得されます。

mylist[10]

実行結果は以下のようになります。

10

 

次はステップを指定してみましょう

mylist[0:100:10]

実行結果は以下のようになります。

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

 

開始や終了にマイナスを指定することもできます。この場合でも開始<=終了でないと要素が取り出されないことに注意してください。

mylist[-90:-80]

実行結果は以下のようになります。

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 

ステップにもマイナスを指定した場合を見てみましょう。ステップにマイナスを指定することで末尾から要素が取り出されます。よってこの場合は開始>=終了となるように指定します。

mylist[-1:-10:-1]

実行結果は以下のようになります。

[99, 98, 97, 96, 95, 94, 93, 92, 91]

 

最後はスライスを利用した代入方法を確認します。

mylist[0:5] = ["a", "b", "c", "d", "e"]
mylist[0:10]

実行結果は以下のようになります。

['a', 'b', 'c', 'd', 'e', 5, 6, 7, 8, 9]

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。