0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの「ミュータブル」と「イミュータブル」を整理してみた

Posted at

Pythonの「ミュータブル」と「イミュータブル」を整理してみた

Pythonを使っていると、「ミュータブル(mutable)」と「イミュータブル(immutable)」という言葉に出会うことがあります。

久々にその言葉を聞いた時に、ミュータブルとイミュータブルってなんやったっけとなったので、その違いを備忘録としてまとめました。Python初心者の方にも参考になればうれしいです。


🔁 ミュータブル(mutable)

作成したオブジェクトの状態を変更できる性質のこと。

以下のような型がミュータブルに該当します:

  • list(リスト)
  • dict(辞書)
  • set(集合)

✅ リストの例

my_list = [1, 2, 3]
my_list.append(4)     # 要素を追加
my_list[0] = 10       # 要素を変更
print(my_list)        # 出力: [10, 2, 3, 4]

✅ リストの参照渡し

a = [5]       # メモリ上に [5] というリストオブジェクトを作成
b = a         # 新しいリストオブジェクトは作成されず、b も a と同じオブジェクトを参照
b.append(10)  # b が参照しているリストオブジェクト自体を変更
print(a)      # 出力: [5, 10]

✅ 辞書の例

my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3       # 新しいキーと値を追加
my_dict['a'] = 10      # 既存の値を変更
print(my_dict)         # 出力: {'a': 10, 'b': 2, 'c': 3}

✅ 集合の例

my_set = {1, 2}
my_set.add(3)          # 要素を追加
my_set.remove(1)       # 要素を削除
print(my_set)          # 出力: {2, 3}

🔒 イミュータブル(immutable)

作成したオブジェクトの状態を変更できない性質のこと。
変更しようとすると、新しいオブジェクトが作成されます。

以下のような型がミュータブルに該当します:

  • int(整数などの数値型)

  • str(文字列)

  • tuple(タプル)

🔸 数値の例

x = 5
y = x
y = y + 1              # yは新しいオブジェクトを参照
print(x)               # 出力: 5
print(y)               # 出力: 6

🔸文字列の例

s1 = "hello"
s2 = s1
s2 = s2 + " world"     # 新しい文字列オブジェクトを作成
print(s1)              # 出力: hello
print(s2)              # 出力: hello world

🔸タプルの例

my_tuple = (1, 2)

my_tuple[0] = 10     # エラーになります
# TypeError: 'tuple' object does not support item assignment

my_tuple2 = my_tuple + (3,)  # 新しいタプルが作成される
print(my_tuple)              # 出力: (1, 2)
print(my_tuple2)             # 出力: (1, 2, 3)

💡 おわりに

Pythonの「ミュータブル」と「イミュータブル」は、データの扱いやバグの原因を理解する上でとても重要な概念です。
どちらが「変更可能」なのか迷ったときは、このページを思い出してみてください!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?