3.9. スライス

3.9.1. スライスの基本

スライスは以下のような記述で開始位置、終了位置、ステップ幅を指定します。またこれらの指定は省略可能で、シーケンスの要素数に応じて適切に動作します。

1
2
test = ['aa','bb','cc','dd','ee','ff','gg']
print(test[:])

出力

['aa','bb','cc','dd','ee','ff','gg']

3.9.2. 要素の取得

開始位置を省略し、終了位置を指定することで先頭から指定位置までの要素を取得することができます。

1
2
3
test = test = ['aa','bb','cc','dd','ee','ff','gg']

print (test[:2])

出力

['aa', 'bb']

開始位置を指定して、終了位置を省略すると、指定位置から文字列の末尾までの要素を取得することができます。

1
2
3
test = ['aa','bb','cc','dd','ee','ff','gg']

print (test[2:])

出力

['cc','dd','ee','ff','gg']

ステップ幅を指定することで、指定数ごとの要素を取得することができます。

1
2
3
  test = ['aa','bb','cc','dd','ee','ff','gg']

  print (test[0:6:2])

出力

['aa','cc','ee']

開始位置と終了位置をしていすることで範囲内の要素を取得することができます。 なお、開始に指定した位置の文字列(開始インデックス)は出力されますが、 終了に指定した位置の文字列(終了インデックス)は出力されません。

1
2
 test = ['aa','bb','cc','dd','ee','ff','gg']
 print(test[2:4])

出力

['cc','dd']

負の数を指定することで末尾から取得することができます。

1
2
3
4
5
test = ['aa', 'bb','cc','dd','ee','ff','gg']

print (test[-1:])   # 末尾から全ての要素
print (test[:-1])   # 末尾
print (test[::-1])  # 末尾から全ての逆順要素

出力

['gg']
['aa', 'bb', 'cc', 'dd', 'ee', 'ff']
['gg', 'ff', 'ee', 'dd', 'cc', 'bb', 'aa']

3.9.3. 要素の代入

要素の代入における範囲指定方法も要素の取得と変わりません

1
2
3
4
test = ['a', 'b','c','d','e']
test[1:3] = ['1','2']

print (test)

出力

['a', '1', '2', 'd', 'e']