前言:
此时小伙伴们对“python中的可变数据类型有__和__”大体比较关切,看官们都想要知道一些“python中的可变数据类型有__和__”的相关内容。那么小编也在网上网罗了一些有关“python中的可变数据类型有__和__””的相关资讯,希望咱们能喜欢,兄弟们快快来了解一下吧!说python拷贝之前我们需要了解一下可变数据类型和不可变数据类型,这两个概念在python中是很重要的
比较两个变量内存地址是否相同 可以用一下两种方法
print(id(a) == id(b))print(a is b)可变数据类型
在id不变的情况下,数据类型内部的元素(value)可以改变,如列表、字典、集合
列表
# 列表里面的元素改变了 但是id没有改变numbers = [1, 2, 3, 4]print(id(numbers)) # 140457440522720numbers[3] = 9000print(id(numbers)) # 140457440522720print(numbers) # [1, 2, 3, 9000]numbers.append(5000)print(id(numbers)) # 140457440522720print(numbers) # [1, 2, 3, 9000, 5000]
字典
# 对字典的增删改 无论怎么操作 字典的id始终保持不变,始终指向相同的内存地址info = { "name": "HyRer"}print(id(info)) # 140482397545328info["age"] = 18print(info) # {'name': 'HyRer', 'age': 18}print(id(info)) # 140482397545328info["name"] = "xiaoming"print(id(info)) # 140482397545328print(info) # {'name': 'xiaoming', 'age': 18}
集合
集合本身是可变数据类型,但是集合里面的元素必须是不可变数据类型,这一点要注意
sets = {1, 2, 3, 4}print(id(sets)) # 140223981126912sets.add(5)print(id(sets)) # 140223981126912sets.pop()print(id(sets)) # 140223981126912不可变数据类型
value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)如:数字、字符串、布尔值,元组
对于不可变数据类型 只要value的值是相同的,不管变量名是不是一样,他们指向的内存地址都是一个,即他们的id 都是相同的
数字
# 如果数值发生改变,那么id也跟的改变num = 10000print(id(num)) # 4365441824num = 200000print(id(num)) # 4365441856# value值一样 那么变量名指向的内存地址都是一样的num1 = 200000print(id(num) == id(num1)) # Trueprint(num1 is num) # True
字符串
# 如果value发生改变,那么id也跟的改变name = "xiaoming"print(id(name)) # 140207318292464name = "xiaodong"print(id(name)) # 140207318354608# value值一样 那么变量名指向的内存地址都是一样的name1 = "xiaodong"print(id(name1) == id(name)) # Trueprint(name1 is name) # True
布尔
right = Trueprint(id(right)) # 4455573680right = Falseprint(id(right)) # 4455573680# value值一样 那么变量名指向的内存地址都是一样的right1 = Falseprint(id(right1) == id(right)) # Trueprint(right is right1) # True
元组
元祖不能增删改,所以只比较相同value值的内存地址是否相同
tup1 = (1, 2, 3)tup2 = (1, 2, 3)print(tup1 is tup2) # True
标签: #python中的可变数据类型有__和__ #python中可变数据类型有 #python中可变的数据类型和不可变的数据类型