Python 可变与不可变类型图表

Python 可变与不可变类型图表,python,types,immutability,mutable,Python,Types,Immutability,Mutable,是否有一个表或图表可以显示python中哪些类型(内置)是可变和不可变的?我不确定是否有图表,但基本上: 可变: 列表,字典,字节数组 注意:bytearray不是序列 不可变: tuple,str 您可以通过以下方式检查可变性: >>> import collections >>> l = range(10) >>> s = "Hello World" >>> isinstance(l, collections.Mutab

是否有一个表或图表可以显示python中哪些类型(内置)是可变和不可变的?

我不确定是否有图表,但基本上:

可变:

列表
字典
字节数组
注意:
bytearray
不是序列

不可变:

tuple
str

您可以通过以下方式检查可变性:

>>> import collections
>>> l = range(10)
>>> s = "Hello World"
>>> isinstance(l, collections.MutableSequence)
True
>>> isinstance(s, collections.MutableSequence)
False
对于字典(映射):


这检查它是否是一个可变序列,而不是它是否是一个可变对象。dict显然是可变对象,但是
isinstance({},collections.MutableSequence)
为false。是的,对于dict,使用了
MutableMapping
。我没有提到,因为我以列表为例。我会更新它。这对集合不起作用。我的观点是,
collections
不会以通用方式告诉您对象是可变的还是不可变的。好的。那么检查它的一般方法是什么?请随时更新答案。@Sukbir:Add
bytearray
到可变图表(仅py3)。另外还有
array.array
,它可能不是狭义上的“内置”,但通常是存在的。
>>> isinstance({}, collections.MutableMapping)
True