Pythonのスライスの使い方

2021/01/08Python

Pythonにはスライスと呼ばれる「リスト、文字列、タプル、バイト列」変数から一部を切り出す機能を持っています。

Pythonのスライスの使い方

Pythonにはスライスと呼ばれる「リスト、文字列、タプル、バイト列」変数からインデクスの開始と終了を指定するだけで、該当部分を抜き出してくれる機能があります。

スライスは以下のように開始・終了のインデックス番号を「:(コロン)」でつないで使います。

lst[ 開始インデックス番号 :  終了インデックス番号 ]

インデックス番号の指定方法

スライスのインデックス番号の指定方法は3通りあります。

またインデックス番号には正の数、負の数が指定でき、正のインデクス番号は0から始まり、負のインデックス番号は-1から始まります。

開始インデックス番号と終了インデックス番号指定(正の値)

スライスの開始インデックス番号と終了インデックス番号(正の値)を指定する方法です。

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "開始、終了指定:lst[ 5 : 7 ]={}".format( lst[ 5 : 7 ] ))

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

lst=ABCDEFGHI
開始、終了指定:lst[ 5 : 7 ]=FG

終了インデックス番号を省略(正の値)

スライスの終了インデックス番号を省略すると指定された開始インデックス番号(正の値)から最後までを切り取られます。

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "開始のみ指定  :lst[ 5 :   ]={}".format( lst[ 5 :   ] ))

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

lst=ABCDEFGHI
開始のみ指定  :lst[ 5 :   ]=FGHI

開始インデックス番号を省略(正の値)

スライスの開始インデックス番号を省略すると文字列の最初から指定された終了インデックス番号(正の値)までが切り取られます。

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "終了のみ指定  :lst[   : 7 ]={}".format( lst[   : 7 ] ))

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

lst=ABCDEFGHI
終了のみ指定  :lst[   : 7 ]=ABCDEFG

開始インデックス番号と終了インデックス番号指定(負の値)

スライスの開始インデックス番号と終了インデックス番号(負の値)を指定する方法です。
(マイナスの値のインデックス番号は文字列の最後が-1、その1つ前が-2…と文字列の先頭に近づくにつれて小さな値になります。)

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "開始、終了指定:lst[ -3 : -1  ]={}".format( lst[ -3 : -1  ] ))

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

lst=ABCDEFGHI
開始、終了指定:lst[ -3 : -1  ]=GH

終了インデックス番号を省略(負の値)

スライスの終了インデックス番号(負の値)を省略すると指定された開始インデックス番号(負の値)から最後までを切り取られます。

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "開始のみ指定  :lst[ -3 :     ]={}".format( lst[ -3 :     ] ))

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

lst=ABCDEFGHI
開始のみ指定  :lst[ -3 :     ]=GHI

開始インデックス番号を省略(負の値)

スライスの開始インデックス番号(負の値)を省略すると最初から指定された終了インデックス番号(負の値)までが切り取られます。

lst = "ABCDEFGHI"

print( "lst={}".format( lst ))
print( "終了のみ指定  :lst[    : -3  ]={}".format( lst[    : -3  ] )

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

lst=ABCDEFGHI
終了のみ指定  :lst[    : -3  ]=ABCDEF

まとめ

Pythonのスライスは開始と終了のインデックス番号を指定することで任意の部分を切り取ることが簡単にできます。

以下は指定するインデックス番号と文字列の位置の関係を表現したものになります。

lst=ABCDEFGHI
-------スライスで指定されるインデックス番号-----
 +---+---+---+---+---+---+---+---+---+
 | A | B | C | D | E | F | G | H | I | --->文字列
 +---+---+---+---+---+---+---+---+---+
 0   1   2   3   4   5   6   7   8   9 --->正の値のインデックス番号
-9  -8  -7  -6  -5  -4  -3  -2  -1     --->負の値のインデックス番号

株式会社システムトラスト

人材募集中です。

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ