【python】スライスの使い方

python

Pythonではコロンを使って表すスライス(例: [2:5:2])によって、リストや文字列、タプルなどのシーケンスオブジェクトの一部分を選択して取得したり別の値を代入したりできます。

目次

スライスの書式

リスト[start:stop:step]

基本的な使い方

スライスでは選択範囲の開始位置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]

開始位置startと終了位置stopに加えて、増分stepも指定可能です。[start:stop:step]のように書きます。

例えばstep2とした場合、奇数個目の要素のみ、または偶数個目の要素のみを取得できます。
詳しくは「コラム ~奇数・偶数番目の要素を取得する~」で解説します。

sample_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sample_lst[0:9:2])
# [0, 2, 4, 6, 8]

増分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]

startstopを省略し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]
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次