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