リスト 文法・環境

【python】リスト(list)のスライスの使い方【基本、後ろから、2次元、代入など】

pythonのリストのスライスの使い方について紹介します。

スライスの基本的な使い方から、スライスでできることまで、幅広く紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

  • スライスの基本的な使い方
  • スライスを後ろから指定する方法
  • スライスで、リストの末尾の要素を削除する方法
  • 2次元のリストをスライスする方法
  • リストのスライス部分を削除する方法
  • リストをスライスして値を代入する方法
  • 【補足】文字列をスライスする方法

スポンサーリンク

リスト(list)のスライスの基本的な使い方

はじめに、スライスの基本的な使い方について紹介します。

スライスを用いることで、リストや文字列を部分的に取得できます

スライスで、範囲を指定する場合は、選択の開始位置終了位置、取得する要素のstep数を指定します。

開始位置、終了位置、step数は、コロン「:」で区切って指定します。

step数は省略可能です。

書き方

リスト[ 開始位置 : 終了位置 : step数 ]

リスト[ 開始位置 : 終了位置 ]

以下は、1次元の要素のスライスのサンプルコードです。

### 1次元リストのスライス【開始位置、終了位置】
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_test[2::])
# [2, 3, 4, 5, 6, 7, 8, 9]
print(list_test[2:])
# [2, 3, 4, 5, 6, 7, 8, 9]

print(list_test[:2:])
# [0, 1]
print(list_test[:2])
# [0, 1]

print(list_test[2:5:])
# [2, 3, 4]
print(list_test[2:5])
# [2, 3, 4]

以下は、step数も指定するサンプルコードです。

### 1次元リストのスライス【開始位置、終了位置、step数】
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_test[2:7:])
# [2, 3, 4, 5, 6]
print(list_test[2:7:2])
# [2, 4, 6]

スポンサーリンク

リスト(list)のスライスを後ろから指定する方法【逆、マイナス】

step数に「-1」を指定することで、リストの要素を逆順でスライスできます

逆側からスライスするので、

開始位置 > 終了位置になっていないと空のリストになります。

### スライスを逆順で指定する方法
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_test[::-1])
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(list_test[5:1:-1])
# [5, 4, 3, 2]
print(list_test[1:5:-1])
# []

スライスで、リスト(list)の末尾の要素を削除する方法【最後】

終了位置に「-1」を指定することで、リストの末尾の要素を削除できます

以下、サンプルコードです。

### スライスでリストの末尾の要素を削除
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_test[:-1:])
# [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(list_test[:-1])
# [0, 1, 2, 3, 4, 5, 6, 7, 8]

2次元のリスト(list)をスライスする方法

2次元のリストをスライスする方法を紹介します。

リストの要素として、リストが格納されていると考えるとスライスの挙動も理解しやすいです。

以下、サンプルコードです。

### 2次元リストのスライス
list_2d = [
    [11, 12, 13, 14],
    [21, 22, 23, 24],
    [31, 32, 33, 34],
    [41, 42, 43, 44],
    [51, 52, 53, 54]
]

print(list_2d[2:4])
# [[31, 32, 33, 34], [41, 42, 43, 44]]

要素としてリストを指定してから、スライスすることもできます。

### 2次元リストのスライス
list_2d = [
     [11, 12, 13, 14],
     [21, 22, 23, 24],
     [31, 32, 33, 34],
     [41, 42, 43, 44],
     [51, 52, 53, 54]
]

print(list_2d[1][1:3])
# [22, 23]

リスト内包表記を用いることで、

スライスを組み合わせることができます。

### 2次元リストのスライス
list_2d = [
    [11, 12, 13, 14],
    [21, 22, 23, 24],
    [31, 32, 33, 34],
    [41, 42, 43, 44],
    [51, 52, 53, 54]
]

print([row[1:3] for row in list_2d[2:4]])
# [[32, 33], [42, 43]]

スポンサーリンク

リスト(list)のスライス部分を削除する方法

スライスを用いて、リストの要素を削除する方法を紹介します。

サンプルコードを2つ紹介します。

del文に、リストの要素をスライスで指定すると、要素を削除できます。

### スライスとdel文で、リストの要素を削除する
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del list_test[2:5]

print(list_test)
# [0, 1, 5, 6, 7, 8, 9]

削除したい要素をスライスで指定し、空のリストを指定しても、要素を削除できます。

### スライスと空の配列で、リストの要素を削除する
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list_test[2:5] = []

print(list_test)
# [0, 1, 5, 6, 7, 8, 9]

なお、リストの要素の削除方法については、下記記事で詳しく紹介しています。

スポンサーリンク

リスト(list)をスライスして値を代入する方法

スライスを用いて、リストに値を代入する方法を紹介します。

スライスで要素を置き換えたり挿入したい場所を指定し、

リストを渡すことで、値を代入できます。

### スライスを用いて、リストの要素を置き換え
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list_test[2:5] = [20, 30, 40]

print(list_test)
# [0, 1, 20, 30, 40, 5, 6, 7, 8, 9]

スライスの開始位置と終了位置を同じにすると、

その位置に要素を挿入できます。

### スライスを用いて、リストに要素を挿入
list_test = list(range(0,10))
print(list_test)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list_test[2:2] = [20, 30, 40]

print(list_test)
# [0, 1, 20, 30, 40, 2, 3, 4, 5, 6, 7, 8, 9]

【補足】文字列をスライスする方法

スライスは、文字列にも適用できます。

### 文字列にスライスを適用
fluits = "AppleBananaOrange"

print(fluits[5:11])
# Banana

スポンサーリンク

まとめ

pythonのリストのスライスの基本的な使い方や、スライスでできることについて紹介しました。

スライスは、リストを扱う上では避けては通れないので、基本的な使い方は身につけておくようにしましょう。

スポンサーリンク

-リスト, 文法・環境
-,