スライスを使ったリストの操作

スライスによる操作

開始位置のインデックスから終了位置のインデックスまで、任意範囲の要素を取得できる。

def study_list_slice():
    sample = [0, 10, 20, 30, 40, 50]
    print("sample =", sample)
    print("sample[2:4]", sample[2:4])
    print("sample[:4]", sample[:4])
    print("sample[2:]", sample[2:])
    print("sample[:]", sample[:])
    print("sample[3:-1]", sample[3:-1])
    print("sample[-2:]", sample[-2:])

    filename = 'apple.png'
    print("filename =", filename)
    print("filename[:-4]", filename[:-4])

実行結果

sample = [0, 10, 20, 30, 40, 50]
sample[2:4] [20, 30]
sample[:4] [0, 10, 20, 30]
sample[2:] [20, 30, 40, 50]
sample[:] [0, 10, 20, 30, 40, 50]
sample[3:-1] [30, 40]
sample[-2:] [40, 50]
filename = apple.png
filename[:-4] apple

以下に、個別に解説していく。

開始位置 (start) と、終了位置 (stop) を指定した場合

start は index、stop は length で指定する、と覚えるとよい。

sample = [0, 10, 20, 30, 40, 50]
print("sample[2:4]", sample[2:4])

実行結果

sample[2:4] [20, 30]

start を省略した場合

要素の最初から選択される。

sample = [0, 10, 20, 30, 40, 50]
print("sample[:4]", sample[:4])

実行結果

sample[:4] [0, 10, 20, 30]

stop を省略した場合

最後の要素まで選択される。

sample = [0, 10, 20, 30, 40, 50]
print("sample[2:]", sample[2:])

実行結果

sample[2:] [20, 30, 40, 50]

start, stop 両方を省略した場合

全ての要素が選択される。

sample = [0, 10, 20, 30, 40, 50]
print("sample[:]", sample[:])

実行結果

sample[:] [0, 10, 20, 30, 40, 50]

マイナス値で指定した場合

末尾からの位置になる。(-1 が最後の要素)

sample = [0, 10, 20, 30, 40, 50]
print("sample[2:4]", sample[3:-1])

実行結果

sample[3:-1] [30, 40]

start がマイナス値で、stop を省略した場合

sample = [0, 10, 20, 30, 40, 50]
print("sample[-2:]", sample[-2:])

実行結果

sample[-2:] [40, 50]

スライスによる文字列の操作

文字列はリストのようなものなので、前項と同様にスライスが使用できる。
ファイル名、拡張子を編集する時によく使う。

filename = 'apple.png'
print("filename =", filename)
print("filename[:-4]", filename[:-4])

実行結果

filename = apple.png
filename[:-4] apple