Pythonスライスの範囲はどのようなものですか?
Pythonのスライスの範囲指定は左は込み、右は抜きの半開区間です。具体的には [start:end] の形式を取りますが、ここで start は開始位置(込み)、end は終了位置(抜き)を示します。例えば、リスト a があるとき、a[start:end] はインデックス start から (start 位置を含む)インデックス end (end 位置は含まない) までのサブリストを返します。なお、start を指定しなければデフォルトは 0(つまりリストの先頭の要素から)になり、end を指定しなければリストの長さ(つまりリストの全要素を含むスライス)になります。また、スライスの指定には負のインデックスも使え、これはリストの末尾から位置を数えることを意味します。以下に例を示します。
a = [1, 2, 3, 4, 5]
print(a[1:3]) # 出力: [2, 3]、インデックス 1 と 2 の要素を取り出した
print(a[:3]) # 出力: [1, 2, 3]、先頭からインデックス 2 までの要素を取り出した
print(a[2:]) # 出力: [3, 4, 5]、インデックス 2 から末尾までの要素を取り出した
print(a[:-1]) # 出力: [1, 2, 3, 4]、先頭から最後から 2 番目の要素を取り出した
print(a[-3:-1]) # 出力: [3, 4]、最後から 3 番目と最後から 2 番目の要素を取り出した