当前位置: 首页 > 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.lryc.cn/news/591732.html

相关文章:

  • 【深度学习】神经网络过拟合与欠拟合-part5
  • DiffPy-CMI详细安装教程
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • 网络基础11 上公网--Internet接入技术
  • python的旧时光咖啡厅数据分析管理系统
  • 深入理解CSS定位:绝对定位的包含块机制
  • JUnit5 实操
  • 征程 6 UCP 任务优先级 抢占简介与实操
  • 流程控制( break与continue)
  • Xss-labs 靶场lever1~lever8通关练习
  • windows利用wsl安装qemu
  • HD现代机器人与TESOLLO合作推出工业自动化双臂机器人解决方案
  • 为什么喜欢叫index文件
  • javax.servlet.http.HttpServletResponse;API导入报错解决方案
  • 找不到或无法加载主类 org.gradle.wrapper.GradleWrapperMain
  • 4G模块 A7680通过MQTT协议连接到腾讯云
  • 初试Spring AI实现聊天功能
  • 「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法
  • 关于pytorch虚拟环境及具体bug问题修改
  • 2025 XYD Summer Camp 7.17 模考
  • 【面板数据】上市公司股价同步性数据集-dta+xlsx(2000-2023年)
  • Adobe Acrobat 插件功能、应用与开发
  • 【Spring AI Alibaba实战Demo】通过Spring AI Alibaba接入本地部署的大模型和线上大模型,实现流式简单对话
  • 8.预处理-demo
  • 【DOCKER】-5 镜像仓库与容器编排
  • docker中 contriner 和 images 什么关系
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • maven本地仓库清缓存py脚本
  • 嵌入式学习-PyTorch(6)-day23