基礎

Pythonのリスト(list)|要素の追加・削除・検索を完全解説

リスト(list)は、複数のデータを順序付きで格納できるPythonの最も基本的なデータ構造です。数値、文字列、さらにはリスト自体など、あらゆる型のデータを混在させて格納できます。

この記事では、リストの作成方法から、要素の追加・削除・検索、スライス、便利なメソッドまで詳しく解説します。

基本的な使い方

リストは角括弧 [] で作成します。要素はカンマで区切ります。

Python
# リストの作成
fruits = ["りんご", "バナナ", "みかん"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14]  # 異なる型もOK
empty = []  # 空のリスト

print(fruits)
print(f"要素数: {len(fruits)}")

# インデックスでアクセス(0始まり)
print(fruits[0])   # りんご
print(fruits[-1])  # みかん(末尾)

# 要素の変更
fruits[1] = "ぶどう"
print(fruits)
実行結果
['りんご', 'バナナ', 'みかん']
要素数: 3
りんご
みかん
['りんご', 'ぶどう', 'みかん']

要素の追加と削除

Python
colors = ["赤", "青"]

# 末尾に追加
colors.append("緑")
print(colors)

# 指定位置に挿入
colors.insert(1, "黄")
print(colors)

# リストの結合
colors.extend(["白", "黒"])
print(colors)

# 要素の削除
colors.remove("黄")      # 値を指定して削除
print(colors)

deleted = colors.pop()    # 末尾を削除して返す
print(f"削除: {deleted}")
print(colors)

deleted = colors.pop(0)   # インデックス指定で削除
print(f"削除: {deleted}")
print(colors)
実行結果
['赤', '青', '緑']
['赤', '黄', '青', '緑']
['赤', '黄', '青', '緑', '白', '黒']
['赤', '青', '緑', '白', '黒']
削除: 黒
['赤', '青', '緑', '白']
削除: 赤
['青', '緑', '白']

スライス

スライスを使うと、リストの一部を切り出せます。

Python
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(nums[2:5])    # インデックス2から4まで
print(nums[:3])     # 先頭から2まで
print(nums[7:])     # 7から末尾まで
print(nums[::2])    # 2つおきに取得
print(nums[::-1])   # 逆順
実行結果
[2, 3, 4]
[0, 1, 2]
[7, 8, 9]
[0, 2, 4, 6, 8]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

検索とソート

Python
numbers = [3, 1, 4, 1, 5, 9, 2, 6]

# 検索
print(3 in numbers)           # 含まれるか: True
print(numbers.index(5))       # インデックス: 4
print(numbers.count(1))       # 出現回数: 2

# ソート
numbers.sort()                # 昇順(元のリストを変更)
print(numbers)

numbers.sort(reverse=True)    # 降順
print(numbers)

# 元のリストを変更せずにソート
original = [3, 1, 4, 1, 5]
sorted_list = sorted(original)
print(f"元: {original}")
print(f"ソート後: {sorted_list}")
実行結果
True
4
2
[1, 1, 2, 3, 4, 5, 6, 9]
[9, 6, 5, 4, 3, 2, 1, 1]
元: [3, 1, 4, 1, 5]
ソート後: [1, 1, 3, 4, 5]
sort()とsorted()の違い

sort()はリスト自体を変更(破壊的操作)し、sorted()は新しいリストを返します(非破壊的操作)。元のリストを保持したい場合はsorted()を使いましょう。

リストのコピーに注意

new_list = old_list では参照のコピーになり、片方を変更するともう片方も変わります。独立したコピーを作るには new_list = old_list.copy() または new_list = old_list[:] を使いましょう。

まとめ

  • リストは [] で作成し、異なる型のデータも格納できる
  • append()で追加、remove()/pop()で削除
  • スライス [start:stop:step] でリストの一部を切り出せる
  • sort()で昇順・降順ソート、sorted()で非破壊的ソート
  • リストのコピーは .copy() で独立したコピーを作る