Python面试题
2021-05-31 23:04
标签:添加元素 blog 动态 deepcopy ram finish pycharm 赋值 files 1、Python的特点和优点? 可解释、开源、动态特性、简洁明了、面向对象(可开动碱面) 详细特点可查看:https://data-flair.training/blogs/python-tutorial/ 2、深拷贝、浅拷贝和直接赋值的区别? 1)深拷贝,把一个对象复制给另外一个对象, 2) 结果: 1.浅拷贝:外层添加元素时,浅拷贝不会随原列表变化而变化;内层添加元素时,浅拷贝才会变化。 Python面试题 标签:添加元素 blog 动态 deepcopy ram finish pycharm 赋值 files 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14728507.htmlimport copy
a = [1, 2, 3, [4, 5]]
print(f"原数组a:{a}, a的地址:{id(a)}")
b = copy.deepcopy(a)
print(f"深拷贝b:{b}, b的地址:{id(b)}")
c = copy.copy(a)
print(f"浅拷贝c:{c}, c的地址:{id(c)}")
d = a
print(f"直赋值d:{d}, d的地址:{id(d)}")
print("\n第一次修改 用=修改\n")
a[0]=6
print(f"原数组a:{a}, a的地址:{id(a)}")
print(f"深拷贝b:{b}, b的地址:{id(b)}")
print(f"浅拷贝c:{c}, c的地址:{id(c)}")
print(f"直赋值d:{d}, d的地址:{id(d)}")
print("\n第二次修改 内层元素添加append一个数\n")
a[3].append(9)
print(f"原数组a:{a}, a的地址:{id(a)}")
print(f"深拷贝b:{b}, b的地址:{id(b)}")
print(f"浅拷贝c:{c}, c的地址:{id(c)}")
print(f"直赋值d:{d}, d的地址:{id(d)}")
print("\n第三次修改 外层元素添加append一个数\n")
a.append(10)
print(f"原数组a:{a}, a的地址:{id(a)}")
print(f"深拷贝b:{b}, b的地址:{id(b)}")
print(f"浅拷贝c:{c}, c的地址:{id(c)}")
print(f"直赋值d:{d}, d的地址:{id(d)}")
"D:\Program Files\Python\PytestProject\Scripts\python.exe" C:/Users/CXM/PycharmProjects/untitled2/test.py
原数组a:[1, 2, 3, [4, 5]], a的地址:1952842345288
深拷贝b:[1, 2, 3, [4, 5]], b的地址:1952843082120
浅拷贝c:[1, 2, 3, [4, 5]], c的地址:1952843201736
直赋值d:[1, 2, 3, [4, 5]], d的地址:1952842345288
第一次修改 用=修改
原数组a:[6, 2, 3, [4, 5]], a的地址:1952842345288
深拷贝b:[1, 2, 3, [4, 5]], b的地址:1952843082120
浅拷贝c:[1, 2, 3, [4, 5]], c的地址:1952843201736
直赋值d:[6, 2, 3, [4, 5]], d的地址:1952842345288
第二次修改 内层元素添加append一个数
原数组a:[6, 2, 3, [4, 5, 9]], a的地址:1952842345288
深拷贝b:[1, 2, 3, [4, 5]], b的地址:1952843082120
浅拷贝c:[1, 2, 3, [4, 5, 9]], c的地址:1952843201736
直赋值d:[6, 2, 3, [4, 5, 9]], d的地址:1952842345288
第三次修改 外层元素添加append一个数
原数组a:[6, 2, 3, [4, 5, 9], 10], a的地址:1952842345288
深拷贝b:[1, 2, 3, [4, 5]], b的地址:1952843082120
浅拷贝c:[1, 2, 3, [4, 5, 9]], c的地址:1952843201736
直赋值d:[6, 2, 3, [4, 5, 9], 10], d的地址:1952842345288
Process finished with exit code 0
2.深拷贝:无论原列表如何变化,深拷贝都保持不变。
3.直接赋值:赋值对象随着原列表一起变化。
上一篇:Go语言实现汉诺塔游戏