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]
コメント