在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动态类型实现原理及过程解析相关推荐

  1. python进程池的实现原理_Python基于进程池实现多进程过程解析

    1.注意:pool必须在 if __name__ == '__main__' 下面运行,不然会报错 2.多进程内出现错误会直接跳过该进程,并且默认不会打印错误信息 3.if__name__下面的数据需 ...

  2. 用python处理excel 数据分析_Python应用实现处理excel数据过程解析

    实现功能 excel表格中有4列数,分别为RMF计算得到的 β,γ,势能面及组态,需要挑选出相同 β 值下势能面最低时的组态.为了减小数据量,先将 β 值保留两位小数. 代码 import xlrd ...

  3. python实现面部特效_Python实现在线批量美颜功能过程解析

    结果 然后直接放源码: import cv2 as cv source = cv.imread("zhaopian.jpg") dst = cv.bilateralFilter(s ...

  4. python 交换机巡检脚本_Python自动巡检H3C交换机实现过程解析

    1.通过netmiko模块登录交换机,协议ssh,执行收集信息命令,保存至txt文件 2.过滤txt文件中的内容,保存到excel,使用xlwt模块实现. 3.sendmai发送excel邮件.或者发 ...

  5. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...

    点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...

  6. python动态_python --动态类型

    动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念 ...

  7. python 长整型_Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习...

    #coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...

  8. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  9. python 取array并集_Python内置数据结构原理与性能简易分析

    ins @ngladc 文末左下方阅读原文指向了本人博客链接,不含广告.参考资料中的相关链接,可以在博客文章的最下方获取.推荐苹果手机用户使用浅色模式观看. 前言 对于一些算法题,可以使用Python ...

最新文章

  1. 小米语音首席科学家Daniel Povey:下一代Kaldi将走向何方?
  2. uniapp中动态修改导航栏标题
  3. Java的标签--弱化的goto
  4. [转]12篇学通C#网络编程——第二篇 HTTP应用编程(上)
  5. lsof用法,查看端口对应的进程,运维(netstat不能用)
  6. 机器学习解决问题思路 — 词嵌入矩阵E对于NLP问题的重要性
  7. JTS Geometry关系判断和分析
  8. neo4j-访问提示No authorization header supplied.
  9. 2021年中国成人商店市场趋势报告、技术动态创新及2027年市场预测
  10. python教程初级有什么用_学Python编程有什么用?Python基础教程!
  11. Oracle行转列、列转行的Sql语句总结
  12. img 居中_如何解决img标签下面的小空隙(详细教程)
  13. 函数模板与函数的区别
  14. .axf文件_一文看懂hex文件、bin文件、axf文件的区别
  15. WingIDE 7.2.0 远程调试
  16. 《CSDN排行榜冲榜攻略》妙用Emoji表情符号读者提升阅读体验(编码表)
  17. 全球及中国医疗众筹行业发展战略与投资规划分析报告2022-2028年
  18. WSO2 XMl转JSON
  19. PowerPivot的杀手锏是什么?
  20. ERROR: backports-5.4-r0 do_compile: oe_runmake failed 解决办法

热门文章

  1. STM32 电机教程 8 - 步进电机开环电流控制
  2. 记录一次quartus II prime standard 18添加器件库的方法
  3. 【任务脚本】双十一将至,任务脚本预热,OrangeJs基于autojs全自动程序,向大神致敬...
  4. 【DIY】嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程请收下
  5. 【GPS信号】GPS信号的读取以及kalman滤波预测
  6. 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
  7. CefSharp For WPF响应页面点击事件
  8. 表单验证,添加动态class
  9. 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
  10. 微信企业号OAuth2.0授权-Java