【6日でできるPython入門】組み込み型 リスト②

Pythonのリスト型は、初めて学ぶ「ミュータブル(変更可能)な型」です。
一度作ったリストの中身を、自由に追加・削除・変更できる点が大きな特徴です。
 この柔軟さのおかげで、リストはプログラミングの多くの場面で活躍しますが、注意しないと予期せぬ結果を招くこともあります。
 ここでは、リストのミュータブル性・コピー・代入の挙動など、リストを安全かつ便利に扱うための知識を身につけましょう。

1.ミュータブル(変更可能)なリスト

1.1. リストの要素の変更

リストは作成後でも中身を直接変更できます
たとえば、特定の要素を上書きしたり、複数の値を書き換えることが可能です。

ファイル名: lesson07-1.py

# メンバーの名前リストを途中で修正するプログラム
members = ['佐藤', '鈴木', '高橋', '田中', '伊藤']

print("元のメンバーリスト:", members)
members[2] = '山本'
print("修正後のメンバーリスト:", members)

# スライスで複数まとめて変更
members[1:3] = ['加藤', '渡辺']
print("さらに修正したリスト:", members)

実行結果

元のメンバーリスト: ['佐藤', '鈴木', '高橋', '田中', '伊藤']
修正後のメンバーリスト: ['佐藤', '鈴木', '山本', '田中', '伊藤']
さらに修正したリスト: ['佐藤', '加藤', '渡辺', '田中', '伊藤']
操作内容
members[2] = '山本'2番目(高橋)を山本に上書き
members[1:3] = [...]複数まとめて変更(スライス代入)

1.2. 文字列型との違い

リストはミュータブルですが、文字列型(str)はイミュータブル(変更不可)です。
文字列で同じことをしようとするとエラーになります。

ファイル名: lesson07-2.py

word = 'python'
# word[0] = 'P'  # これはTypeErrorとなる

エラー例

TypeError: 'str' object does not support item assignment
変更できるか
リストできるfruits[0] = 'オレンジ'
文字列できないtext[0] = 'H' → エラー

2.ミュータブル型の注意点

2.1. 変数の代入とコピーの違い

リスト型は変数に代入しただけだと“同じデータ”を指すことになります。
どちらかで変更を行うと、両方に反映されるので注意が必要です。

ファイル名: lesson07-3.py

# リストを2つの変数で参照し、変更する例
colors1 = ['赤', '青', '緑']
colors2 = colors1  # 単なる代入(同じリストを参照)

colors2.append('黄')
print("colors1:", colors1)
print("colors2:", colors2)

実行結果

colors1: ['赤', '青', '緑', '黄']
colors2: ['赤', '青', '緑', '黄']
操作説明
colors2 = colors1colors1とcolors2は「同じリスト」を指す
colors2.append()両方に反映される(片方の変更=両方の変更)

2.2. 正しいコピー方法(copyメソッド)

独立したリストとしてコピーしたいときは copy() メソッドを使いましょう。

ファイル名: lesson07-4.py

scores1 = [50, 70, 80, 90]
scores2 = scores1.copy()
scores2[0] = 100

print("scores1:", scores1)
print("scores2:", scores2)

実行結果

scores1: [50, 70, 80, 90]
scores2: [100, 70, 80, 90]
方法挙動
a = bどちらも同じリスト
a = b.copy()独立した別々のリスト

3.ミュータブル型・イミュータブル型まとめ

変更可能か代表例
ミュータブル型list, dict, set, 自作クラス
イミュータブル型int, float, str, tuple

Pythonリストのミュータブルな性質を正しく理解すれば、
「複数の場所で同じデータを共有する」便利さと、「意図しない影響」を使い分けられるようになります。
実務でも重要な概念なので、しっかり身につけていきましょう!