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

python math

# 关于Python的深拷贝你可能需要知道这些在Python里处理数据时经常会遇到需要复制对象的情况。这时候很多人会直接使用赋值操作但很快就会发现事情没那么简单。比如你有一个列表里面嵌套了另一个列表当你修改嵌套列表时原始列表也会跟着变化。这就是浅拷贝带来的问题而深拷贝deepcopy就是为了解决这类问题而存在的。理解深拷贝的本质深拷贝不是简单的复制引用而是创建一个全新的对象把原始对象里的所有内容都递归地复制一遍。想象一下你要搬家浅拷贝就像是只复制了地址标签告诉新主人“东西在老地方你去拿吧”而深拷贝则是把房子里所有的家具、电器、甚至墙上的钉子都原样复制一份放到一个新地址去。这两个新家完全独立你在一个家里做什么改动都不会影响到另一个家。Python标准库里的copy模块提供了深拷贝的功能。这个模块虽然不大但里面的机制相当精巧。它能够处理各种复杂的对象结构包括自定义类的实例、嵌套的容器、甚至循环引用的对象。深拷贝的实际应用场景在实际开发中深拷贝最常见的用途是处理那些需要保持独立性的数据。比如配置文件的解析结果你希望有一份基础配置然后根据不同的环境创建修改后的版本但又不想影响基础配置。再比如在数据处理流程中原始数据需要保持不变而后续的清洗、转换操作都在副本上进行。另一个典型场景是缓存数据的复制。有时候我们会缓存一些计算结果但这些结果可能包含可变对象。如果直接把缓存对象返回给调用者调用者无意中的修改就会破坏缓存的一致性。这时候用深拷贝创建一个副本返回就能避免这个问题。在多线程环境下深拷贝也能提供一定的安全性。虽然Python的GIL让真正的并行变得有限但在异步编程或协程中数据的意外共享仍然可能发生。深拷贝可以确保每个任务操作的都是独立的数据副本。如何使用深拷贝使用深拷贝非常简单只需要从copy模块导入deepcopy函数即可。基本用法就是new_object copy.deepcopy(original_object)。但深拷贝的魅力在于它能处理各种复杂情况。比如处理带有循环引用的对象时深拷贝也能正确工作。考虑这样一个场景对象A引用了对象B对象B又引用了对象A形成了一个环。如果简单地递归复制程序就会陷入无限循环。但deepcopy函数内部维护了一个备忘录字典记录已经复制过的对象遇到已经处理过的对象就直接使用之前创建的副本从而避免了循环问题。对于自定义的类深拷贝默认会复制实例的所有属性。但如果类定义了__deepcopy__方法深拷贝时会调用这个方法让开发者可以控制复制过程。这在某些特殊场景下很有用比如某些属性可能指向外部资源数据库连接、文件句柄等这些资源不应该被复制。一些值得注意的细节虽然深拷贝很强大但也不能滥用。深拷贝的代价是比较高的特别是对于大型的嵌套结构递归复制会消耗不少时间和内存。在实际使用中需要权衡是否真的需要深拷贝。有时候只需要复制最外层容器内部元素保持共享引用就足够了。另一个需要注意的点是深拷贝无法复制所有类型的对象。比如文件对象、线程锁、数据库连接这些与外部状态绑定的对象深拷贝要么无法处理要么复制出来的对象没有实际意义。对于这类对象通常需要在__deepcopy__方法中特殊处理。深拷贝还会遇到对象一致性的问题。想象一下复制一个包含日期时间对象的列表如果复制过程中系统时间发生了变化那么原始对象和副本中的时间对象就会存在微小差异。虽然这种情况很少见但在对时间极其敏感的应用中需要考虑。与其他复制方式的比较Python中常见的复制方式除了深拷贝还有赋值、浅拷贝和某些特定类型的复制方法。赋值操作是最简单的但它不创建新对象只是给现有对象增加一个别名。这就像给一个人起外号不管叫哪个名字指的都是同一个人。浅拷贝创建了新的容器对象但容器内的元素仍然是原始元素的引用。copy模块的copy函数、列表的切片操作list[:]、字典的dict.copy()方法都属于浅拷贝。这就像复印了一份通讯录封面是新的但里面的电话号码还是指向原来那些人。某些内置类型提供了自己的复制方法比如列表的list()构造函数、字典的dict()构造函数。这些方法通常也是浅拷贝但比通用的copy函数稍微快一点因为它们不需要检查对象的类型。深拷贝则是彻底的复制从外到内都是新的。代价是性能开销最大但保证了完全的独立性。选择哪种复制方式取决于具体的需求。如果确定内部元素是不可变的比如数字、字符串、元组那么浅拷贝就足够了。如果需要完全的独立性或者内部元素是可变对象且可能被修改那么深拷贝是更安全的选择。在实际编程中还有一种常见# # 聊聊Python里的math模块很多人刚开始学Python的时候都会接触到这个叫math的模块。它看起来平平无奇不像那些能做出炫酷网页或智能应用的框架那样吸引眼球。但用久了就会发现这个模块其实挺有意思的它像是工具箱里那把最基础却又最常用的螺丝刀。它到底是什么math模块是Python标准库的一部分也就是说只要你装了Python它就已经在那里了不需要额外安装。这个模块主要提供了一些数学运算相关的函数和常数。如果你把它想象成一个工具箱那math就是专门放数学工具的那一层抽屉。里面既有像圆周率π、自然常数e这样的固定数值也有计算平方根、对数、三角函数等各种数学运算的工具函数。有意思的是这个模块里的函数都是用C语言实现的所以运行速度比用纯Python写的要快不少。虽然平时可能感觉不到差别但在需要大量计算的时候这个优势就体现出来了。它能帮我们做什么最直接的用途当然是做数学计算。比如要算一个圆的面积可以直接用里面的π要算直角三角形斜边的长度可以用勾股定理相关的函数。但它的用途远不止这些。在做数据分析的时候经常需要用到对数变换处理几何图形时三角函数就派上用场了甚至在写游戏的时候计算角度、旋转物体也会用到它。有个实际场景是金融计算。比如要计算复利或者做某些统计分析math模块里的指数、对数函数就特别有用。还有在科学计算领域虽然大家更常用NumPy这样的专业库但math模块作为基础在很多简单场景下完全够用。怎么使用它使用起来很简单先在代码开头写上import math然后就能用math.后面跟函数名的方式来调用了。比如要计算16的平方根就写math.sqrt(16)需要圆周率的值直接用math.pi。三角函数如正弦、余弦分别是math.sin()和math.cos()注意这些函数默认使用弧度制而不是角度制这点刚开始容易搞错。有个细节值得注意math模块里的函数大多要求参数是浮点数。如果传入整数Python会自动转换但明确传入浮点数会让代码意图更清晰。比如math.sqrt(4.0)就比math.sqrt(4)更能让人一眼看出你在处理浮点运算。一些使用上的建议虽然math模块用起来简单但有些地方还是需要注意的。比如处理非常大或非常小的数字时浮点数的精度问题就会出现。这不是math模块的缺陷而是计算机表示浮点数的固有局限。了解这一点很重要可以避免很多看似奇怪的计算结果。另一个建议是如果要做大量的数组运算特别是涉及向量和矩阵的可能更适合用NumPy。但如果是单个或少量数值的计算math模块就足够了没必要引入更重的依赖。写代码的时候尽量给数学运算加上注释特别是那些不那么直观的公式。半年后自己回头看代码或者别人来维护时这些注释会很有帮助。和其他工具的对比Python生态里和数学计算相关的工具不少最常被拿来和math比较的就是NumPy了。math模块像是瑞士军刀小巧便携适合处理简单的、零散的数学运算。而NumPy更像是专业工具箱功能强大但也更复杂适合处理数组、矩阵这类结构化数据。如果只是偶尔算个平方根、用用三角函数math模块完全够用。它的优势在于轻量、无需额外安装、学习成本低。但如果是做数据分析、机器学习这些需要处理大量数据的工作NumPy的向量化运算优势就太明显了速度能快上几十甚至上百倍。还有个细节是math模块里有些函数在NumPy里也有但命名可能略有不同或者参数顺序不一样。从一个切换到另一个时需要注意这些细微差别。说到底math模块是Python里一个很基础但很实用的部分。它不炫酷但扎实可靠。很多复杂的库和框架底层其实都在用它。对于日常开发中的大多数数学计算需求它都能很好地满足。知道什么时候用它什么时候需要更专业的工具这也是Python开发者需要掌握的一种判断力。的做法是结合使用浅拷贝和手动复制。比如先做浅拷贝然后只修改需要独立的部分。这种做法比完整的深拷贝更高效但需要开发者对数据结构有清晰的了解。深拷贝是Python中一个看似简单但内涵丰富的功能。它解决了对象复制的根本问题但同时也带来了性能上的考虑。理解它的工作原理和适用场景能够帮助我们在需要时做出合适的选择写出更健壮、更高效的代码。

相关文章:

python math

# 关于Python的深拷贝,你可能需要知道这些 在Python里处理数据时,经常会遇到需要复制对象的情况。这时候很多人会直接使用赋值操作,但很快就会发现事情没那么简单。比如你有一个列表,里面嵌套了另一个列表,当你修改嵌套…...

Docker-存储驱动配置

devicemapper驱动devicemapper 是 Linux 内核中的一个框架,它可以将块设备(如磁盘、分区、文件)映射成虚拟的块设备。Docker 使用它来为每个容器提供一个独立的、隔离的文件系统。 direct-lvm 和 loop-lvm 是 devicemapper 驱动在 Docker 中实…...

Youtu-2B开源部署教程:腾讯优图LLM一键运行实践

Youtu-2B开源部署教程:腾讯优图LLM一键运行实践 1. 项目简介与核心价值 Youtu-2B是腾讯优图实验室推出的轻量化大语言模型服务,基于Tencent-YouTu-Research/Youtu-LLM-2B模型构建。这个模型虽然体积小巧,但在多个关键任务上表现出色&#x…...

通义千问3-VL-Reranker-8B多场景落地:生物医药论文+实验图+临床视频

通义千问3-VL-Reranker-8B多场景落地:生物医药论文实验图临床视频 多模态重排序服务 Web UI,支持文本、图像、视频的混合检索与排序。 在生物医药领域,研究人员每天需要处理海量的学术论文、实验图像和临床视频。传统的关键词搜索往往难以精准…...

PowerPaint-V1 Gradio与LangChain集成:智能图像处理流程自动化

PowerPaint-V1 Gradio与LangChain集成:智能图像处理流程自动化 1. 引言 你有没有遇到过这样的情况:需要批量处理一批图片,每张图片都需要进行不同的修复操作?比如有些需要去掉水印,有些需要添加特定物体,…...

OpCore-Simplify智能自动化:黑苹果配置的技术解决方案

OpCore-Simplify智能自动化:黑苹果配置的技术解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是技术爱好者面临的重…...

PyTorch 2.8镜像生产环境:Nginx+FastAPI+PyTorch视频生成服务上线指南

PyTorch 2.8镜像生产环境:NginxFastAPIPyTorch视频生成服务上线指南 1. 镜像环境概述 PyTorch 2.8深度学习镜像是一个专为生产环境优化的完整解决方案,特别适合需要稳定运行视频生成服务的场景。这个镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&am…...

开源模型社区共建实践:雯雯的后宫-Z-Image用户反馈机制与CSDN技术文档协作模式

开源模型社区共建实践:雯雯的后宫-Z-Image用户反馈机制与CSDN技术文档协作模式 1. 项目背景与价值 雯雯的后宫-造相Z-Image-瑜伽女孩是一个专注于生成瑜伽主题图片的开源模型,基于Z-Image-Turbo的LoRA版本开发。这个项目不仅提供了高质量的文生图能力&…...

像素幻梦·创意工坊多场景落地:游戏开发、教育课件、社交媒体配图生成

像素幻梦创意工坊多场景落地:游戏开发、教育课件、社交媒体配图生成 1. 像素艺术的新纪元 在数字创作领域,像素艺术正经历一场前所未有的复兴。像素幻梦创意工坊(Pixel Dream Workshop)作为新一代AI像素艺术生成工具,正在改变创作者的工作方…...

丹青识画零基础上手:无编程经验也能操作的水墨AI交互流程

丹青识画零基础上手:无编程经验也能操作的水墨AI交互流程 1. 认识丹青识画:科技与艺术的完美融合 丹青识画是一款让人惊艳的智能影像识别系统,它用最前沿的AI技术来解读图片内容,然后用中国传统书法和水墨画风格来呈现识别结果。…...

造相-Z-Image-Turbo LoRA镜像合规性:符合中国AI生成内容标识与内容安全要求

造相-Z-Image-Turbo LoRA镜像合规性:符合AI生成内容标识与内容安全要求 1. 项目概述与核心价值 造相-Z-Image-Turbo LoRA镜像是一个基于先进AI技术的图片生成Web服务,专门为需要高质量图像生成的用户设计。这个服务不仅提供了强大的图像生成能力&#…...

魔兽争霸3帧率终极优化指南:从60到240帧的完整解决方案

魔兽争霸3帧率终极优化指南:从60到240帧的完整解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 【问题诊断:你的魔兽争…...

03、数据结构与算法--单向链表

一种比顺序表稍微复杂些的结构... 一、认识链表 1、基本结构 链表是一个个结点构成的,就像火车 顺序表可以通过get方法(传入下标)来获取表,因为它们的地址是连续的 与顺序表不同的是,链表的物理存储不连续,要获取某个结点的话不…...

Blender 5.0三维建模软件免费下载

分享文件:Blender 下载链接:https://pan.xunlei.com/s/VOnoa-uAZeIscnA0CetsTTVXA1?pwdq9az# 下载连接...

Adobe Bridge(Br)2026下载连接

下载链接:https://pan.xunlei.com/s/VOnoa7p2tYOZ1jAQ_1Qvn1T7A1?pwdmb33 下载连接...

C++编程主题:智能指针深入解析

C编程主题:智能指针深入解析 在C的广阔领域中,内存管理一直是一个既基础又至关重要的环节。传统的手动内存管理方式,如使用new和delete,虽然灵活,但容易引发内存泄漏、悬垂指针等问题,给程序的安全性和稳定…...

Python程序设计强基计划10讲 · 第三讲:字典与集合——哈希表的威力

Python程序设计强基计划10讲 第三讲:字典与集合——哈希表的威力作者:培风图南以星河揽胜 发布时间:2026年3月31日 适用对象:已掌握列表、元组等序列类型的Python初学者 前置知识:第二讲《列表与元组——序列操作的艺…...

Stratovirt安装及使用

文章目录安装创建虚拟机安装 硬件要求 处理器架构:仅支持AArch64和x86_64处理器架构。AArch64需要ARMv8及更高版本且支持虚拟化扩展;x86_64支持VT-x。 软件要求 操作系统:openEuler 20.09及更高版本 我当前安装的stratovirt版本是2.1.0&…...

9.3LED点阵屏显示动画

#include <REGX52.H> #include "Delay.h" #include "MatrixLED.h"//动画数据 unsigned char code Animation[]{0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C, };void…...

大模型Agent-应用小记【转载】

参考资料 万字长文解读LLM Agent&#xff1a;总体框架、经典论文与实践万字长文解析Agent框架中的上下文管理策略从Claude Code入手看Agent框架设计思路&#xff08;基础篇&#xff09; Agent基础 Agent基本定义 LLM 工具调用 / 长期记忆能力 / 规划能力 上下文管理 是什…...

【豆包从入门到精通】001、初识豆包:大模型时代的入门钥匙

001、初识豆包&#xff1a;大模型时代的入门钥匙 昨天深夜调试一个嵌入式日志解析脚本时&#xff0c;我又遇到了那个老问题——正则表达式写到第三层嵌套就开始失控&#xff0c;同事的代码注释像密码本&#xff0c;而产品经理在群里催着要三个月前的异常模式统计。就在我对着满…...

Java static关键字全解析:从共享属性到工具类,一篇搞懂静态变量和静态方法

你有没有想过这些问题&#xff1a;为什么main方法是static的&#xff1f;为什么工具类的方法都是static的&#xff1f;为什么静态方法里不能直接调用非静态方法&#xff1f;今天这篇文章&#xff0c;我们就把static关键字彻底讲透。从共享属性到工具类&#xff0c;从内存原理到…...

【数据结构】顺序表的应用->通讯录(详细代码及配图)

小编主页详情<-请点击 小编gitee代码仓库<-请点击 本文主要介绍了数据结构的顺序表的应用->通讯录&#xff0c;内容全由作者原创&#xff08;无AI&#xff09;&#xff0c;同时深度解析了通讯录顺序表增删查改等功能&#xff0c;并带有配图帮助博友们更好的理解&#…...

008、系统组装与API服务化:构建完整RAG Pipeline

昨天深夜调试时遇到一个典型问题:用户问“今年Q3财报关键数据”,系统返回的却是三年前的老数据。检查发现,检索模块返回了相关文档,但排序逻辑把发布时间字段误当成相关性分数处理了。这种模块间接口不对齐的问题,在组装RAG系统时太常见了。 管道组装:不只是拼积木 很多…...

007、大语言模型集成:Prompt工程与上下文管理

昨天深夜调试时遇到一个诡异问题:同样的查询,在本地测试时LLM能准确返回产品参数,上了生产环境就总答非所问。盯着监控日志看了半小时才发现,某个微服务在拼接用户历史对话时,漏掉了两条关键消息——上下文窗口看似饱满,实则缺了核心信息。这个坑让我重新审视了RAG系统中…...

华为:渐进解锁细粒度视觉感知

&#x1f4d6;标题&#xff1a;FineViT: Progressively Unlocking Fine-Grained Perception with Dense Recaptions &#x1f310;来源&#xff1a;arXiv, 2603.17326v1 &#x1f31f;摘要 虽然多模态大语言模型&#xff08;MLLM&#xff09;经历了快速的发展&#xff0c;但其视…...

我郑重声明:我的目标是图灵奖,这是理工男的执念!所以在第一时间发现可实现AGI蓝图的时候,就给图灵奖官方邮箱发了论文PDF,这是存档+时间戳。我知道,明确知道,最终的AGI实现必然走我的路子。哈哈哈

总有人拿民科来说事&#xff0c;仔细想咱真也是民科&#xff0c;&#xff0c;&#xff0c;没啥说的&#xff0c;没混上教授的&#xff0c;那个不是民科&#xff1f;&#xff1f;&#xff1f; 不要拿民科怎么样来说事&#xff0c;我开始没说自己咋样&#xff0c;真就只想那个图…...

私域流量运营自动化 1.5 小时上手

OpenClaw 电商实战 第 2 篇 字数&#xff1a;约 10000 字 阅读时间&#xff1a;约 25 分钟 难度&#xff1a;⭐ 入门&#xff08;无需编程&#xff09; 更新时间&#xff1a;2026-04-01 写在前面 这个教程能帮你解决什么&#xff1f; 如果你是&#xff1a; ✅ 电商运营人员✅…...

LangChain与向量库集成:Document Loaders与Text Splitters

上周三凌晨两点&#xff0c;我被一个奇怪的召回问题卡住了&#xff1a;明明在PDF里写得很清楚的配置项&#xff0c;用相似问题去查向量库&#xff0c;总是返回一些边缘内容。打开调试日志一看&#xff0c;发现切出来的文本片段里&#xff0c;前半段是某个章节的结尾&#xff0c…...

CW32L012/F030灵眸X1智能小车--电机调速控制

1.认识PWM PWM&#xff08;Pulse Width Modulation脉宽调制&#xff09;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用&#xff0c;方波占空比被调制用来对一个具体模拟信号的电平…...