Pythonのリスト(list)は「ミュータブル(変更可能)」なデータ型です。これは、リストを一度作成した後でも、その中身(要素)の値を自由に変更できることを意味します。
データベースから取得したデータの状態を更新したり、設定リストの一部を書き換えたりする際に、この操作は不可欠です。
この記事では、リスト内の特定の要素を新しい値で更新(上書き)する基本的な方法を解説します。
インデックスを指定した要素の更新
リストの要素を更新する最も基本的な方法は、**インデックス(位置番号)**を指定して、代入演算子(=)で新しい値を設定することです。
構文:
リスト変数[インデックス] = 新しい値
1. 正のインデックス(0から始まる)による更新
Pythonのインデックスは 0 から始まります。[0] は先頭、[1] は2番目の要素を指します。
例として、複数のサーバーのステータスを管理するリストを見てみましょう。
# サーバーのステータスリスト
server_statuses = ["Online", "Pending", "Offline", "Online"]
print(f"更新前: {server_statuses}")
# 2番目 (インデックス 1) の "Pending" を "Maintenance" に変更
server_statuses[1] = "Maintenance"
print(f"更新後: {server_statuses}")
実行結果:
更新前: ['Online', 'Pending', 'Offline', 'Online']
更新後: ['Online', 'Maintenance', 'Offline', 'Online']
インデックス 1 の位置にあった "Pending" が "Maintenance" に上書きされました。
2. 負のインデックス(-1から始まる)による更新
[-1](末尾)や [-2](末尾から2番目)といった負のインデックスも、参照時と同様に更新(代入)に使用できます。
server_statuses = ["Online", "Maintenance", "Offline", "Online"]
print(f"更新前: {server_statuses}")
# 末尾 (インデックス -1) の "Online" を "Error" に変更
server_statuses[-1] = "Error"
print(f"更新後: {server_statuses}")
実行結果:
更新前: ['Online', 'Maintenance', 'Offline', 'Online']
更新後: ['Online', 'Maintenance', 'Offline', 'Error']
注意点:IndexError
この方法は、あくまで既存のインデックスの値を「置き換える」操作です。
リストの範囲外(存在しないインデックス)に対して代入しようとすると IndexError が発生します。
server_statuses = ["Online", "Maintenance", "Offline", "Error"]
# リストの長さは 4 (インデックスは 0, 1, 2, 3)
# 存在しないインデックス 4 に代入しようとするとエラー
# server_statuses[4] = "New Server"
# IndexError: list assignment index out of range
新しい要素をリストの末尾に追加したい場合は、代入ではなく append() メソッド(server_statuses.append("New Server"))を使用します。
まとめ
- Pythonリストの要素は、
my_list[index] = new_valueという構文で簡単に更新できます。 0から始まる正のインデックスと、[-1]から始まる負のインデックスの両方が使用可能です。- この操作は、既存の要素の「置き換え」であり、存在しないインデックスへの代入は
IndexErrorとなります。
