当前位置: 首页 > news >正文

Python类型转换,深浅拷贝

1 类型转换

1.1 int()

转换成一个整数,只能转换由纯数字组成的字符串

 

如果字符串中有数字和正负号以外的字符就会报错,正负(+ -)号只能在数字前面,在其余位置会被当成加减号,会报错

1.2 float()

将整型转换成一个小数或由纯数字组成的字符串转换成浮点型

整型转换为浮点型会在末尾添加一位数

由纯数字组成的字符串,如果存在小数点末尾不会添加一位数,反之则添加一位为零的数

1.3 str()

转换为字符串类型,任意类型都可以转换为字符串类型

整型转换为字符串类型

浮点型转换为字符串类型,末位为零的部分会去除

1.4 eval()

用法1:

动态执行字符串表达式:eval()能够解析字符串形式的Python代码,例如:eval("1"+"2"),返回的结果就是3,如果没有eval的话结果就会是12

用法2:

数据类型转换:可将字符串转换为Python对象,例如

字符串转化为列表:

字符串转化为字典:

 字符串转化为元组:

1.5 list()

将可迭代对象转换为列表,可迭代对象就是能够被for循环遍历取值的,常见的可迭代对象有列表(list)、元组(tuple)、字典(dict)、集合(set)和字符串(str)

字符串转换为列表:

元组转换为列表:

字典转换为列表:

字典转换为列表,取键名作为列表的值

2 深浅拷贝

2.1 赋值

li = [1,2,3,4]
li1 = li #将li赋值给li1
print(li,li1)
li.append(2) #li新增元素
print(li,li1)

当我们执行上述代码就会发现,li新增元素会导致li1的变化,由此得出结论:赋值是完全共享资源,一个值的变化会导致另一个也跟着变化,并且两个值的内存地址也是一样的

 

对于自身可变,或包含可变项的集合,有时要生成副本用于改变操作,而不必改变原始对象。本模块提供了通用的浅层复制和深层复制操作。

2.2 浅拷贝 

创建新的对象,拷贝第一层的数据,嵌套层会指向原来的内存地址。实现浅拷贝,首先要导入必要的模块copy模块

import copy #导入模块
li = [1,2,[3,4,5]]  #定义一个嵌套列表
li1 = copy.copy(li) #浅拷贝
li.append(6)
print("li:",li,"li1:",li1)

运行上述代码,得到的结果与赋值完全不同,我们会发现li的改变,不会影响到li1

再查看两个变量的内存地址,是否一样

print(id(li),id(li1))

 

地址不相同,说明不是同一个对象。上面提到说浅拷贝,只拷贝第一层,嵌套层还是会指向原来的地址,因此我们来验证一下。

import copy
li = [1,2,[3,4,5]]
li1 = copy.copy(li)
li[2].append(6)
print("li:",li,"li1:",li1)

 我们发现两个变量都改变了。外层的内存地址不同,内存的地址相同,浅拷贝的优点:拷贝速度快,占用空间少。

2.3 深拷贝

外层和内层的都拷贝

示例:

import copy
li = [1,2,[3,4,5]]
li1 = copy.deepcopy(li) #深拷贝则是deepcopy
li[2].append(6)
print("li:",li,"li1:",li1)

 

执行上述代码发现,往嵌套层添加元素,并没有改变另一个对象 

 

 

http://www.dtcms.com/a/285132.html

相关文章:

  • python的旧时光咖啡厅数据分析管理系统
  • 深入解析Linux进程创建与fork机制
  • Dify:在MacOS系统下Dify的本地部署与使用
  • Android Jetpack 系列(四)DataStore 全面解析与实践
  • RSTP:快速收敛的生成树技术
  • 深入解析SVM:从对偶问题求解到核函数理论
  • [3-03-01].第61节:开发应用 - Seata中的SAGA模式
  • 防止电脑息屏 html
  • Bell不等式赋能机器学习:微算法科技MLGO一种基于量子纠缠的监督量子分类器训练算法技术
  • Java 8 jdk1.8下载及安装教程和环境变量配置
  • 电子电路中的电压符号命名约定
  • 【前端如何利用 localStorage 存储 Token 及跨域问题解决方案】
  • Python网络爬虫之requests库
  • ISL8121IRZ-T 瑞萨电子Renesas高效双路同步降压控制器 【5G基站、AI服务器】专用
  • LIN通信驱动代码开发注意事项
  • 多重共线性Multicollinearity
  • 复合机器人在生物制药实验室上下料搬运案例
  • LeetCode热题100【第二天】
  • 91套商业策划创业融资计划书PPT模版
  • AppTrace:重新定义免填邀请码,解锁用户裂变新高度
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | PasswordGenerator(密码生成器)
  • 三、了解OpenCV的数据类型
  • 高效去除字符串末尾重复单元的 KMP 前缀函数优化算法实现
  • VR 远程系统的沉浸式协作体验​
  • SpringBoot 使用MyBatisPlus
  • 在windows平台上基于OpenHarmony sdk编译三方库并暴露给ArkTS使用(详细)
  • VSCODE常规设置
  • No catalog entry ‘md5‘ was found for catalog ‘default‘. 的简单解决方法
  • 学习软件测试的第十八天
  • 一款基于PHP开发的不良事件上报系统源码,适用于医院安全管理。系统提供10类事件类别、50余种表单,支持在线填报、匿名上报及紧急报告。