Pythonのスライスオブジェクトについて現役エンジニアが解説【初心者向け】

初心者向けにPythonのスライスオブジェクトについて現役エンジニアが解説しています。スライスオブジェクトとはシーケンス型(リスト、タプル、文字列など)の一部をインデックスを指定して切り取る操作ができるオブジェクトです。スライスの開始位置や終了位置を指定することができるでしょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonのスライスオブジェクトについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

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

大石ゆかり

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

田島悠介

Pythonのスライスオブジェクトについて詳しく説明していくね!

大石ゆかり

お願いします!

 

スライスオブジェクトとは

Pythonのスライスオブジェクトとは、Python標準のライブラリの一つで、シーケンス型(リスト、タプル、文字列など)の一部をインデックスを指定して切り取る操作が可能です。

リストや文字の一部分を切り出したい時や文字の並びを反転させたり等の処理ができます。

 

スライスオブジェクトの使い方

スライスオブジェクトは、下記文法で使用可能です。

a [ start : stop : step ]

start(int):スライス開始位置
stop(int):スライス終了位置
step(int):スライス間隔( デフォルト:1)

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

実際に書いてみよう

文字列”abcdefg”とリスト[1,2,3,4,5,6,7]それぞれをスライスする方法について、サンプルコードを例に実際に書いていきましょう。

サンプルコード

# 文字列の場合
a = 'abcdefg'

# 文字列'abcdefg'から'cdef'をスライス
print(a[2:6])
# 文字列'abcdefg'から1文字間隔でスライス
print(a[::2])

# リストの場合
b = [1,2,3,4,5,6,7]

# リスト[1,2,3,4,5,6,7]から[3,4,5]をスライス
print(b[2:5])
# リスト[1,2,3,4,5,6,7]から1データ間隔でスライス
print(b[::2])

 

実行結果

cdef
aceg
[3, 4, 5]
[1, 3, 5, 7]

 

解説

Pythonでの文字列・リストのインデックスはスタート位置が0から始まることを意識しましょう。

 

文字列のスライスについて解説していきます。

文字列のスライスはコード 1-7行目の部分です。

今回は”abcdefg”という合計7文字の文字列なのでインデックスは0-6です。

コード5行目では、文字列”abcdefg”から”cdef”をスライスしています。

 

この場合のインデックスはstartが2、stopが6となるでしょう。

コード6行目では、文字列”abcdefg”を1文字間隔空けてスライスしています。

この場合のインデックスはstart・stopともに設定なしで、stepが2となります。

(インデックスで0,2,4,6にあたる文字がスライスされます。)

 

リストのスライスについても、基本的には文字列のスライスと同様に行うことが可能です。

コード13行目では、リスト[1,2,3,4,5,6,7]から[3,4,5]をスライスしています。

この場合のインデックスはstartが2、stopが5です。

コード15行目では、リスト[1,2,3,4,5,6,7]から1データ間隔空けてスライスしています。

この場合のインデックスもstart・stopともに設定なしでstepが2となります。

実行結果では、それぞれがスライスされた結果が出力されていることが確認できるでしょう。

 

まとめ

今回はPythonのスライスオブジェクトについて紹介しました。

そして、スライスオブジェクトで最も注意しなければならない点はインデックスの取り扱いです。

普段の生活で文字数を数える場合は1からスタートするのに対し、Pythonのインデックスは0からスタートします。

この間隔を意識しなければ、インデックス操作でエラーを起こしやすいのでしっかりと覚えておきましょう。

 

執筆してくれたメンター

菅繕久(すがよしひこ)

現在はフリーランスのエンジニアをしていてプログラミング歴は8年目になります。

普段は Python、FileMaker等を使って様々な業務で活用できるIoTプロダクトRPAツールを作成しています。

開発実績としては、業務自動化ツール(在庫管理・発注・ファイル操作 etc)、電子カルテシステム、ロボット用プログラムなどがあります。
TechAcademyではPythonコースを担当しております。

 

大石ゆかり

Pythonのスライスオブジェクトについてよく分かったので良かったです!

田島悠介

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

大石ゆかり

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

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプを開催しています。

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