Python数据类型可变不可变知识点总结
在Python中,数据类型被分为可变和不可变两种类型。可变意味着这种类型的值可以在创建后更改,而不可变意味着这种类型的值创建后不能更改。这里我们将讨论常见的Python数据类型的可变性和不可变性,并提供相关示例。
不可变数据类型
数字类型
数字类型(int、float、complex等)是不可变的数据类型。这意味着每次更改数字类型的值时,Python都会创建一个新的数字对象来代替旧的对象。
示例代码:
>>> a = 1
>>> b = a
>>> id(a)
139828645103696
>>> id(b)
139828645103696
>>> a = a + 1
>>> id(a)
139828645103728
>>> id(b)
139828645103696
这个示例中,我们创建了一个变量a
并将值1赋值给它,然后再将a
赋给另一个变量b
。之后,我们更改a
的值,这将创建一个新的对象,b
依然保持原值,即不可变性。
字符串
字符串是不可变的数据类型。这意味着字符串中每次更改一部分时,Python将构造一个新字符串对象,而不是在原始字符串上进行更改。
示例代码:
>>> s1 = "hello"
>>> s2 = s1
>>> id(s1)
140444091958896
>>> id(s2)
140444091958896
>>> s1 = s1 + " world"
>>> id(s1)
140444091965424
>>> id(s2)
140444091958896
这个示例中,我们创建了一个字符串s1
,并将相同的值赋值给s2
。当我们更改s1
的值时,Python创建一个新的字符串对象,并将s1
指向这个新对象,s2
保持指向旧对象的指针。
元组
元组是不可变的。元组是由多个值组成的的不可变序列。一旦创建,元组中的元素不能添加或删除,也不能更改元素的值。
示例代码:
>>> t = (1, 2, 3)
>>> id(t)
140444091943376
>>> t[0] = 4 # 不能更改元素的值
TypeError: 'tuple' object does not support item assignment
可变数据类型
列表
列表是可变的。列表是由多个元素组成的可变有序序列。可以通过添加、删除或更改列表的元素来更改其值。
示例代码:
>>> l = [1, 2, 3]
>>> id(l)
140444091865936
>>> l.append(4)
>>> id(l)
140444091865936 # 值被修改,但指向的对象未发生变化
在这个示例中,我们创建了一个列表l
并将值1,2,3
赋给它,之后我们添加了一个新值4
,这个值会被添加到已经存在的列表对象中,指向的对象并没有变化。
集合
集合是可变的。集合是由多个元素组成的可变无序序列。可以通过添加、删除或更改集合的元素来更改其值。
示例代码:
>>> s = {1, 2, 3}
>>> id(s)
140444092024960
>>> s.add(4)
>>> id(s)
140444092024960 # 值被修改,但指向的对象未发生变化
在这个示例中,我们创建了一个集合s
并将值1,2,3
赋给它,之后我们添加了一个新值4
,这个值会被添加到已经存在的集合对象中,指向的对象并没有变化。
字典
字典是可变的。字典是由键及其对应的值组成的可变序列。可以通过添加、删除或更改字典的元素来更改其值。
示例代码:
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> id(d)
140444092097696
>>> d['d'] = 4
>>> id(d)
140444092097696 # 值被修改,但指向的对象未发生变化
在这个示例中,我们创建了一个字典d
,并将值{'a': 1, 'b': 2, 'c': 3}
赋给它,之后我们添加了一个新键值对{'d': 4}
,这个键值对会被添加到已经存在的字典对象中,指向的对象并没有变化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据类型可变不可变知识点总结 - Python技术站