python列表实现原理_Python动态类型实现原理及过程解析
在python中,我们使用变量时,并没有声明变量的存在和类型。类型是在运行过程中自动决定的。
a = 3
python将会执行三步去完成上面这个请求。
1.创建一个对象代表3
2.创建一个变量a,如果a未创建。
3.将变量a与对象3相连接。
可以将变量a看作对象3的一个引用。
a = 3
b = a
多个变量可以指向同一个对象,在Python中叫共享引用。
Python在每个对象中保持了一个计数器,用于记录当前指向该对象的引用的数目,一旦计数器被设置为0,该对象的内存空间就会自动回收。
原处修改对象
由于共享引用的存在,有一些对象和操作会在原处修改对象。
Python中对象可分为可变类型对象和不可变类型对象。
可变对象:列表,字典
不可变对象:数字,字符串,元组
如果变量是不可变对象的引用,对变量名的修改不会影响其他变量,而是直接连接到修改的对象。
a = 3
b = a
print(a)# 3
print(b)# 3
a = 4
print(a)# 4
print(b)# 3
如果变量是可变对象的引用,对变量名的修改会影响其他变量。
a = [1,2,3]
b = a
print(a)# [1, 2, 3]
print(b)# [1, 2, 3]
a[0] = 4
print(a)# [4, 2, 3]
print(b)# [4, 2, 3]
拷贝
所以当你需要创建一个与原列表一样同时又独立于原列表的列表时,可以使用拷贝。
下面介绍最常用的两种。
a = [1,2,3]
b = a[:]
print(a)# [1, 2, 3]
print(b)# [1, 2, 3]
a[0] = 4
print(a)# [4, 2, 3]
print(b)# [1, 2, 3]
此时b引用的是a所引用的对象的拷贝。a,b指向不同的内存区域。
在字典和集合中,无法使用这种方法。
可以使用标准库中的copy模块
import copy
a = [1,2,[3]]
b = copy.copy(a)# 浅拷贝
c = copy.deepcopy(a)# 深拷贝
a[0] = 0
a[-1].append(4)
print(a)# [0, 2, [3, 4]]
print(b)# [1, 2, [3, 4]]
print(c)# [1, 2, [3]]
浅拷贝中可变对象中嵌套的可变对象的引用还是原来的引用。
深拷贝可以拷贝嵌套的对象结构。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持随便开发网。
python列表实现原理_Python动态类型实现原理及过程解析相关推荐
- python进程池的实现原理_Python基于进程池实现多进程过程解析
1.注意:pool必须在 if __name__ == '__main__' 下面运行,不然会报错 2.多进程内出现错误会直接跳过该进程,并且默认不会打印错误信息 3.if__name__下面的数据需 ...
- 用python处理excel 数据分析_Python应用实现处理excel数据过程解析
实现功能 excel表格中有4列数,分别为RMF计算得到的 β,γ,势能面及组态,需要挑选出相同 β 值下势能面最低时的组态.为了减小数据量,先将 β 值保留两位小数. 代码 import xlrd ...
- python实现面部特效_Python实现在线批量美颜功能过程解析
结果 然后直接放源码: import cv2 as cv source = cv.imread("zhaopian.jpg") dst = cv.bilateralFilter(s ...
- python 交换机巡检脚本_Python自动巡检H3C交换机实现过程解析
1.通过netmiko模块登录交换机,协议ssh,执行收集信息命令,保存至txt文件 2.过滤txt文件中的内容,保存到excel,使用xlwt模块实现. 3.sendmai发送excel邮件.或者发 ...
- python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...
点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...
- python动态_python --动态类型
动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念 ...
- python 长整型_Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习...
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- python 取array并集_Python内置数据结构原理与性能简易分析
ins @ngladc 文末左下方阅读原文指向了本人博客链接,不含广告.参考资料中的相关链接,可以在博客文章的最下方获取.推荐苹果手机用户使用浅色模式观看. 前言 对于一些算法题,可以使用Python ...
最新文章
- 小米语音首席科学家Daniel Povey:下一代Kaldi将走向何方?
- uniapp中动态修改导航栏标题
- Java的标签--弱化的goto
- [转]12篇学通C#网络编程——第二篇 HTTP应用编程(上)
- lsof用法,查看端口对应的进程,运维(netstat不能用)
- 机器学习解决问题思路 — 词嵌入矩阵E对于NLP问题的重要性
- JTS Geometry关系判断和分析
- neo4j-访问提示No authorization header supplied.
- 2021年中国成人商店市场趋势报告、技术动态创新及2027年市场预测
- python教程初级有什么用_学Python编程有什么用?Python基础教程!
- Oracle行转列、列转行的Sql语句总结
- img 居中_如何解决img标签下面的小空隙(详细教程)
- 函数模板与函数的区别
- .axf文件_一文看懂hex文件、bin文件、axf文件的区别
- WingIDE 7.2.0 远程调试
- 《CSDN排行榜冲榜攻略》妙用Emoji表情符号读者提升阅读体验(编码表)
- 全球及中国医疗众筹行业发展战略与投资规划分析报告2022-2028年
- WSO2 XMl转JSON
- PowerPivot的杀手锏是什么?
- ERROR: backports-5.4-r0 do_compile: oe_runmake failed 解决办法
热门文章
- STM32 电机教程 8 - 步进电机开环电流控制
- 记录一次quartus II prime standard 18添加器件库的方法
- 【任务脚本】双十一将至,任务脚本预热,OrangeJs基于autojs全自动程序,向大神致敬...
- 【DIY】嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程请收下
- 【GPS信号】GPS信号的读取以及kalman滤波预测
- 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
- CefSharp For WPF响应页面点击事件
- 表单验证,添加动态class
- 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
- 微信企业号OAuth2.0授权-Java