码迷,mamicode.com
首页 > 编程语言 > 详细

Python面试题

时间:2021-05-23 23:43:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:添加元素   blog   动态   deepcopy   ram   finish   pycharm   赋值   files   

1、Python的特点和优点?

可解释、开源、动态特性、简洁明了、面向对象(可开动碱面)

详细特点可查看:https://data-flair.training/blogs/python-tutorial/

2、深拷贝、浅拷贝和直接赋值的区别?

1)深拷贝,把一个对象复制给另外一个对象,

2)

import 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

  

1.浅拷贝:外层添加元素时,浅拷贝不会随原列表变化而变化;内层添加元素时,浅拷贝才会变化。
2.深拷贝:无论原列表如何变化,深拷贝都保持不变。
3.直接赋值:赋值对象随着原列表一起变化。

 

Python面试题

标签:添加元素   blog   动态   deepcopy   ram   finish   pycharm   赋值   files   

原文地址:https://www.cnblogs.com/chenxiaomeng/p/14728507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!