
tupleのスライスは、listのスライスと考え方は同じです。スライスは指定した範囲の要素を抜き出して、新しいtupleを作るという挙動の為、要素の追加や編集ができないtupleでも使用することが出来ます。
Table of Contents(目次)
tupleの要素番号の基本
このレクチャーでは、複数のデータ型を含む以下のtupleを用いて説明を行います。
sample_tuple = ('zero', 1, -222, -3.3, [4, 4.4], "5-five", 6.6, (7,))
[0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] |
[-8] | [-7] | [-6] | [-5] | [-4] | [-3] | [-2] | [-1] |
'zero' | 1 | -222 | -3.3 | [4, 4.4] | "5-five" | 6.6 | (7,) |
まずは、基本となる要素番号の指定についておさらいします。
要素番号の先頭は[0]
で、順番に番号が振られます。今回のサンプルの要素数は"8"なので、[0]
から[7]
までの要素番号が割り当てられています。
また、要素番号の最後から順に指定することもできます。その場合は[-1]
から順に番号を指定します。
sample_tuple = ('zero', 1, -222, -3.3, [4, 4.4], "5-five", 6.6, (7,))
# 要素番号[0]から順に
print(sample_tuple[0]) # 'zero'
print(sample_tuple[1]) # 1
print(sample_tuple[2]) # -222
print(sample_tuple[3]) # -3.3
print(sample_tuple[4]) # [4, 4.4]
print(sample_tuple[5]) # "5-five"
print(sample_tuple[6]) # 6.6
print(sample_tuple[7]) # (7,)
# 要素番号[-1]から順に
print(sample_tuple[-1]) # (7,)
print(sample_tuple[-2]) # 6.6
print(sample_tuple[-3]) # "5-five"
print(sample_tuple[-4]) # [4, 4.4]
print(sample_tuple[-5]) # -3.3
print(sample_tuple[-6]) # -222
print(sample_tuple[-7]) # 1
print(sample_tuple[-8]) # 'zero'
tupleのスライス
tupleのスライスのルールは次の通りです。基本的に文字列の時と同じです。
[n:m]
: [n]から[m]の1つ手前までのtupleを返します- 要素番号をマイナスで指定した時もルールは同じ
- n, mで指定する範囲は、実際のtupleの要素番号の範囲外でも指定可能
(※ 要素を単体で指定([n]
)する場合は、要素番号の範囲内である必要があります。)
[:m]
: 最初の要素を指定しない場合は、[0]から[m]の1つ手前までのtupleを返します[n:]
: 最後の要素を指定しない場合は、[n]から1番最後までのtupleを返します[:]
: コロンの左右に何も指定しない場合は、[0]から1番最後までのtupleを返します[n:m:step]
: step数を入力すると、[n:m]の範囲内でstep数ごとに要素を抽出します- step使用時、n, mの値は省略可能
- stepにマイナスの値を指定することも可能
- ※ マイナスの値を指定した場合は、逆順に要素が抽出されます。この時、n, mの値は、[n]の要素の位置より[m]の要素の位置の方が左側を指定していないと要素0のtupleが返されるので注意が必要です。(要素を抽出する順に、始点要素番号と終点要素番号を指定します。)
例:[5:1:-1]
のように指定します。
- ※ マイナスの値を指定した場合は、逆順に要素が抽出されます。この時、n, mの値は、[n]の要素の位置より[m]の要素の位置の方が左側を指定していないと要素0のtupleが返されるので注意が必要です。(要素を抽出する順に、始点要素番号と終点要素番号を指定します。)
下記コードは、各ルールのサンプルになります。出力結果を、要素番号表と照らし合わせながら確認してみましょう。
sample_tuple = ('zero', 1, -222, -3.3, [4, 4.4], "5-five", 6.6, (7,))
print('[0:3]:\t', sample_tuple[0:3]) # [0:3]: ('zero', 1, -222)
print('[4:-1]:\t', sample_tuple[4:-1]) # [4:-1]: ([4, 4.4], '5-five', 6.6)
print('[-9:9]:\t', sample_tuple[-9:9]) # [-9:9]: ('zero', 1, -222, -3.3, [4, 4.4], '5-five', 6.6, (7,))
print('[:6]:\t', sample_tuple[:6]) # [:6]: ('zero', 1, -222, -3.3, [4, 4.4], '5-five')
print('[-4:]:\t', sample_tuple[-4:]) # [-4:]: ([4, 4.4], '5-five', 6.6, (7,))
print('[:]:\t', sample_tuple[:]) # [:]: ('zero', 1, -222, -3.3, [4, 4.4], '5-five', 6.6, (7,))
print('[0:6:2]:\t', sample_tuple[0:6:2]) # [0:6:2]: ('zero', -222, [4, 4.4])
print('[::-1]:\t', sample_tuple[::-1]) # [::-1]: ((7,), 6.6, '5-five', [4, 4.4], -3.3, -222, 1, 'zero')
print('[5:1:-1]:\t', sample_tuple[5:1:-1]) # [5:1:-1]: ('5-five', [4, 4.4], -3.3, -222)
print('[1:5:-1]:\t', sample_tuple[1:5:-1]) # [1:5:-1]: () * nとmの指定が逆なので、要素数0のtupleが返される
[0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] |
[-8] | [-7] | [-6] | [-5] | [-4] | [-3] | [-2] | [-1] |
'zero' | 1 | -222 | -3.3 | [4, 4.4] | "5-five" | 6.6 | (7,) |