Pythonではコロンを使って表すスライス(例: [2:5:2]
)によって、リストや文字列、タプルなどのシーケンスオブジェクトの一部分を選択して取得したり別の値を代入したりできます。
目次
スライスの書式
リスト[start:stop:step]
基本的な使い方
開始位置startと終了位置stopを指定
スライスでは選択範囲の開始位置start
と終了位置stop
を[start:stop]
のように書きます。
すると、start <= x < stop
の範囲が選択されます。このこのとき、start
番目の値は含まれますが、stop
番目の値は含まれないので注意が必要です。
sample_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sample_lst[2:5])
# [2, 3, 4]
増分stepを指定
開始位置start
と終了位置stop
に加えて、増分step
も指定可能です。[start:stop:step]
のように書きます。
例えばstep
を2
とした場合、奇数個目の要素のみ、または偶数個目の要素のみを取得できます。
詳しくは「コラム ~奇数・偶数番目の要素を取得する~」で解説します。
sample_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sample_lst[0:9:2])
# [0, 2, 4, 6, 8]
増分stepをマイナスで指定
増分step
を負の値で指定すると、後ろから逆順で要素を取得します。
start
から逆向きに値を取得していくため、start
のほうがstop
より後ろの位置を示していないと空になってしまうので注意が必要です。
sample_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sample_lst[9:0:-2])
# [9, 7, 5, 3, 1]
print(sample_lst[0:9:-2])
# []
コラム ~奇数・偶数番目の要素を取得する~
[start:stop:step]
を[0::2]
と設定するとリストの偶数番目を取得できます。リストの0番目から、2ずつスキップしています。同じく[1::2]
と設定するとリストの奇数部分を取得できます。リストの1番目から、2ずつスキップしています。
sample_lst = [67, 43, 6, 23, 86, 99, 1, 29, 55, 60, 85]
# sample_lstの偶数番目を取得
even_lst = sample_lst[0::2]
print(even_lst)
# [67, 6, 86, 1, 55, 85]
# sample_lstの奇数番目を取得
odd_lst = sample_lst[1::2]
print(odd_lst)
# [43, 23, 99, 29, 60]
コラム ~リストを逆順にする~
start
とstop
を省略しstep
を-1
とすることで、もとのオブジェクトの順番を逆転したオブジェクトが取得できます。
sample_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sample_lst[::-1])
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
コメント