python的可变类型和不可变类型

2019-06-07
此知识点是在学习pandas的apply函数中:如何利用applymap将str转化成int时王提到的问题。
可变类型:list dict
不可变类型:number str tuple bool
python中的不可变数据类型,即不允许变量的值原地发生变化,一但值发生了变化,则相当于新建了一个对象,id会变。
所以,可变类型:值变化,id不变化;不可变类型:值变化,id变化。

如何确定一种数据类型是可变的还是不可变的:
根据上面的介绍,只需在改变value值的同时,使用id()函数查看变量id是否变化即可。
number:

>>> id(num1)
140723828876336
>>> num1 = 9
>>> id(num1)
140723828876368

以上id发生了变化,所以number不可变。
str:

>>> a = 'huang'
>>> id(a)
2039740156144
>>> a = 'lin'
>>> id(a)
2039740157824

以上id发生了变化,所以str不可变。
tuple:
元组元素是无法修改的,所以元组不可变。
list:

>>> y = [1,'a',0.9]
>>> id(y)
2039739966088
>>> y[0] = 9
>>> y
[9, 'a', 0.9]
>>> id(y)
2039739966088

列表中的元素发生变化时,id未变,所以list可变。
dict:

>>> d = {'a':1,'b':2}
>>> id(d)
2039742751512
>>> d['a'] = 5
>>> d
{'a': 5, 'b': 2}
>>> id(d)
2039742751512

dict中的value发生变化时,id未变,所以dict可变。

你可能感兴趣的:(python的可变类型和不可变类型)