python学习笔记------浅拷贝与深拷贝

is 和 == 有和区别
# id: 在内存中存储的位置
# type: 变量的;类型
# value: 值是否相等;
# == 判断:   type, value
# is 判断:    type, value, id

# 结论:
#  is表示的是对象标识符;表示两个变量的值是否在同一块内存空间;
#  ==表示的是值是否相等;

# 总结: is返回值为True, ==返回一定是True;
浅拷贝与深拷贝
li = [1,2,3,4]

# 不是拷贝, 是将li1的指向li的内存位置;
li1 = li
li1.append(5)
print (li)
print(li1 is li)

# 拷贝列表成功
li2 = li[:]
print(li2 is li)
li2.append(5)
print(li)
print(li2)


# 浅拷贝
li = [1, 2, 3, [2, 3]]

li3 = li[:]
print(li3 is li)
print(li3[-1][0] is li[-1][0])

li3[-1].append(0)
print(li)
print(li3)

# import copy
# li = [1, 2, 3, [2, 3]]
# li3 = copy.copy(li)
# li3[-1].append(1)
# print (li)
# print (li3)

# 深拷贝
import copy
li = [1, 2, 3, [2, 3]]
li4 = copy.deepcopy(li)

print(li is li4)
li4[-1].append(0)
print(li)
print(li4)

实验结果如下:

[1, 2, 3, 4, 5]
True
False
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 5]
False
True
[1, 2, 3, [2, 3, 0]]
[1, 2, 3, [2, 3, 0]]
[1, 2, 3, [2, 3, 1]]
[1, 2, 3, [2, 3, 1]]
False
[1, 2, 3, [2, 3]]
[1, 2, 3, [2, 3, 0]]

猜你喜欢

转载自blog.csdn.net/qq_41891803/article/details/81413819