Python 可变/不可变容器

Joh*_*ohn 0 python immutability

以下容器在 Python 中是可变的还是不可变的?

  • 列表

  • 元组

  • 字典

Pau*_* S. 5

列表,字典:可变

元组:不可变


Ysh*_*Ysh 5

可变意味着变量的值可以在存储或引用变量的同一内存块本身中更改。

不可变意味着,当您尝试更改变量的值时,它会创建一个新的内存块并将新值存储在那里。

不可变——字符串、元组、数字等 可变——列表、字典、类等

例子:

让我们考虑一个列表,它是可变的......

a=[1,2,3] 假设列表 'a' 现在位于名为“A0XXX”的内存块中,如果您想将 4,5 添加到列表中... b=[4,5] 将它们都附加一个 + =b 现在 a=[1,2,3,4,5] 所以,现在最终列表 'a' 也存储在同一个内存块“A0XXX”

由于列表是可变的,它存储在同一个内存块中。

如果它是不可变的,则最终列表 'a' 将存储在其他内存块“B0XXX”中,因此可变对象可以更改并存储在同一内存块中,当您尝试对不可变对象执行相同操作时,一个新的创建内存块以存储更改的值。