sec02 - listのスライス

listのスライスは、文字列のスライスと考え方は同じです。文字列の場合は1文字ずつ処理されましたが、listの場合は1要素ずつ処理されます。

スポンサーリンク

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マイナスの値を指定することも可能
      • ※ マイナスの値を指定した場合は、逆順に要素が抽出されます。この時、nmの値は、[n]の要素の位置より[m]の要素の位置の方が左側を指定していないと要素0のlistが返されるので注意が必要です。(要素を抽出する順に、始点要素番号と終点要素番号を指定します。)
        例:
        [5:1:-1]のように指定します。

下記コードは、各ルールのサンプルになります。出力結果を、要素番号表と照らし合わせながら確認してみましょう。

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

スポンサーリンク