Python:类型转换和深浅拷贝,可变与不可变对象

news/2025/3/6 1:41:57/

int():转换为一个整数,只能转换由纯数字组成的字符串

浮点型强转整型会去掉小数点及后面的数,只保留整数部分

#如果字符串中有数字和正负号以外的字符就会报错

float():整形转换为浮点型会自动添加一位小数 .0

如果字符串中有正负号,数字和小数点以外的字符则不支持转换

str():转换为字符串类型,任何类型都可以转换成字符串类型 

float转换成str会取出末尾为零的小数部分

eval():执行一个字符串表达式,并返回表达式的值

eval可以实现list,dict,tuple和str之间的转换,虽然功能强大但是不够安全,容易被恶意修改数据不建议使用

list():将可迭代对象转换为列表

支持转换为list的类型:str,tuple,dict,set#其中字典转换成列表只会取键名作为列表的值

拷贝:

赋值:完全共享资源,一个值的改变会完全被另一个值共享

li=[1,2,3,4]
li2=li
print(li)
print(li2)
li.append(5)
print(li)
print(li2)

输出结果为

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

浅拷贝:会创建新的对象,拷贝第一层的数据,嵌套层会指向原来的内存地址(数据半共享)

import copyli=[1,2,3,4,[5,6]]
li2=copy.copy(li)
print(li)
print(li2)

运行结果为:

[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]],结果相同,但是id内存地址不同,说明不是同一个对象

import copyli=[1,2,3,4,[5,6]]
li2=copy.copy(li)
print(li)
print(li2)
li.append(7)
print(li)
print(li2)输出结果为:

[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6], 7]
[1, 2, 3, 4, [5, 6]],可见添加数据后,数据没有完全copy

*如果在其嵌套列表中添加数据,可以copy过去,而且内存地址相同

优点:拷贝速度快,占用空间少

深拷贝(数据不共享):外层的对象和内部的元素都拷贝了一遍

import copyli=[1,2,3,4,[5,6]]
li2=copy.deepcopy(li)
print(li)
print(li2)
li.append(7)
print(li)
print(li2)
#嵌套列表值添加
li[4].append(8)
print(li)
print(li2)

输出结果为:

[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6], 7]
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6, 8], 7]
[1, 2, 3, 4, [5, 6]]#深拷贝中在嵌套列表li添加值不会影响深拷贝后的列表li2,且内存地址不一样

可变对象:

*元组为不可变类型,可变类型为变量对应的值可以修改(增删改查),但是内存地址不会发生改变

不可变对象:

变量对应的值不可以被修改,如果修改就会生成一个新的值从而分配新的内存空间

n=10
print("原地址:",id(n))
n=15
print("现地址:",id(n))

输出结果为:

原地址: 140713881896136
现地址: 140713881896296#内存地址发生变化,修改n的值就会生成新的内存地址

**前面说的深浅拷贝只针对可变对象,不可变对象没有这个说法


http://www.ppmy.cn/news/1576949.html

相关文章

鸿蒙5.0实战案例:使用Snapshot Insight分析ArkTS内存问题

往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

计算机毕业设计SpringBoot+Vue.js图书管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

论文阅读笔记:Depth Pro: Sharp Monocular Metric Depth in Less Than a Second

论文阅读笔记:Depth Pro: Sharp Monocular Metric Depth in Less Than a Second 1 背景1.1 动机1.2 提出的方法 2 创新点3 方法4 模块4.1 训练目标4.2 课程训练 4.3 边缘评价指标4.4 焦距估计 5 效果5.1 和SOTA方法的对比 论文:https://arxiv.org/abs/24…

紧跟 Web3 热潮,RuleOS 如何成为行业新宠?

Web3 热潮正以汹涌之势席卷全球。从金融领域的创新应用到供应链管理的变革,从社交媒体的去中心化尝试到游戏产业的全新玩法探索,Web3 凭借其去中心化、安全性和用户赋权等特性,为各个行业带来了前所未有的机遇。在这股热潮中,Rule…

企业防盗版新招:SPN 沙盒安全上网解决方案

在当今数字化时代,企业运营离不开各类软件工具,但正版软件高昂的成本让不少企业望而却步,转而选择使用盗版软件。然而,这背后却隐藏着巨大的风险。盗版软件常常会在企业不知情的情况下,偷偷向外部网络发送信息&#xf…

【多模态目标检测】【AAAI 2025】FD2-Net

FD2-Net: Frequency-Driven Feature Decomposition Network for Infrared-Visible Object Detection FD2-Net:基于频率驱动的特征分解网络用于红外-可见光目标检测 论文链接 0.论文摘要 红外-可见光目标检测(IVOD)旨在利用红外和…

SQLAlchemy系列教程:理解SQLAlchemy元数据

SQLAlchemy是Python开发人员的强大ORM工具。SQLAlchemy中的元数据是对象-关系映射配置的集合,允许开发人员无缝地定义和使用数据库模式。 使用元数据 SQLAlchemy中的元数据充当各种数据库描述符(如表、列和索引)的容器。这使开发人员能够通…

ROS2软件调用架构和机制解析:Publisher创建

术语 DDS (Data Distribution Service): 用于实时系统的数据分发服务标准,是ROS 2底层通信的基础RMW (ROS Middleware): ROS中间件接口,提供与具体DDS实现无关的抽象APIQoS (Quality of Service): 服务质量策略,控制通信的可靠性、历史记录、…