AI大模型之python基础知识
在学习ai大模型之前先把python的基础知识过一遍。持续更新中……列表列表中的元素不一定是同种类型的数据结构可以包含多种数据类型比如字符串、元祖、字典、数字等等。创建列表的几种方式直接声明。list1[]list2[1,str,2]解析创建这种在项目中用到的比较多。range方法是左闭右开即包含1不包含11list3[valueforvalueinrange(1,11)]转化列表将其他类型的数据结构转为列表类型.str1abclist1list(str1)# 注意输出是[a,b,c]而不是[abc]list2list(range(1,11))# 输出[1,2,3,4,5,6,7,8,9,10]注意不能把int类型的数据转为列表比如num1123list1list(num1)# ❌这种写法是错误会显示TypeError: int object is not iterable。要想把num1转为列表可以先转为字符串123再使用list()方法list2 list(str(num1))原理 list(iterator) 方法的底层逻辑是依次遍历可迭代对象 iterator 的每个元素并把它们塞到一个新列表中。数值列表常用统计计算方法sum(list) 求整个数值列表之和。max(list) :整个数值列表的最大值min(list) :整个数值列表的最小值列表常用方法增append() 方法和 insert() 方法insert() 方法传入第一个参数是索引第二个参数是要插入的元素。使用insert方法把元素插入到索引位置时索引后面的列表元素都向右移动list1[]list1.append(1)# [1]list1.append(2)# [1,2]list1.insert(1,5)# [1,5,2]获取列表切片list[i:j]左闭右开区间省略i,从列表最开头开始省略j一直获取到列表末尾如果i和j都省略则复制整个列表并且新列表和原列表是独立的如果是负数索引则代表从最后往前数。列表切片获取出来的还是一个列表list1[iforiinrange(11)]print(list1[1:3])# [1,2]print(list1[:3])# [0,1,2]print(list1[3:])# [3,4,5,6,7,8,9,10]print(list1[-3:])# [8,9,10] 获取最后三个元素list2list1[:]print(list2)# [0,1,2,3,4,5,6,7,8,9,10],list2和list1是独立的删除元素pop() 方法和 del() 方法pop方法删除末尾的元素,并返回最后一个元素del方法删除时需要一个索引但是不返回这个元素list1[apple,xiaomi,vivo,oppo]elelist1.pop()dellist1[1]print(list1)# [apple, vivo]print(ele)# oppo列表排序和反转列表的 sort() 排序方法和 reverse() 反转方法会永久的改变原列表的排列顺序。sort方法排序只适用于同类型的数据其本质是调用比较符 全局的 sorted() 方法会生成一个新的排好序的列表原列表保持不变注意:sorted方法不是列表的是全局方法因此不能使用像 list.sorted() 这种方法而是这样使用 sorted(list)list1[apple,xiaomi,vivo,oppo]print(list1)# [apple,xiaomi,vivo,oppo]list1.sort()print(list1)# [apple, oppo, vivo, xiaomi],原列表的顺序永久改变list1[apple,xiaomi,vivo,oppo]list2sorted(list1)print(list1)# [apple,xiaomi,vivo,oppo]print(list2)# [apple, oppo, vivo, xiaomi]sort之后是这种结果不是根据字符串长度判断的而是根据Unicode编码比较的。即单词首字母 aovxreverse() 方法是把列表的顺序调换一下位置永久的改变顺序再调用一遍就会恢复原来的顺序list1[apple,xiaomi,vivo,oppo]list1.reverse()# [oppo,vivo,xiaomi,apple]字符串常用方法增使用 或者 join() 方法. join方法常用join() 的用法str.join(sequence).将序列sequence的各个元素用str连接起来形成一个新的字符串list1[apple,xiaomi,vivo,oppo]print(!.join(list1))# 输出apple!xiaomi!vivo!oppojoin()方法的在处理大量字符串的性能要比快2. 删replace() 方法.它会把整个字符串所有的字符都删除或替换rstrip() 删除字符串末尾的空格lstrip() :删除字符串开头的空格strip() :开头和末尾的空格都删除注意字符串属于不可变对象因此使用replace方法其实会生成一个新字符串对象原字符串不变。str1Hello,World!Python,is beautifulstr2str1.replace(,,)print(str1)# Hello,World!Python,is beautifulprint(str2)# HelloWorld!Pythonis beautiful 凡是带,的地方都会被删除字符串切片同列表的切片改字符串属于不可变对象不能直接更改字符串的某个元素否则会报错。不能使用 str1[0] ‘a’ 这种方式因此有两种方法更改字符串拼接或转为列表再转为字符串str1Hello,World!Python,is beautiful# 1.使用字符串拼接替换单个字符str_indexstr1.find(H)str2astr1[str_index1:]print(str2)# aello,World!Python,is beautiful#2.转为列表再替换再转为字符串list_strlist(str1)str_indexlist_str.index(H)list_str[str_index]astr2.join(list_str)print(str2)# aello,World!Python,is beautiful#1.使用字符串拼接将Python改成TypeScriptstr_lenlen(Python)str_indexstr1.find(Python)str2str1[:str_index]TypeScriptstr1[str_indexstr_len1:]print(str2)# 2.使用replace方法str2str1.replace(Python,TypeScript)查使用 find() 方法查找单个字符或字符串找到的话返回索引没找到返回-1.注意find只会查找第一个匹配项找到之后就不再往后查找了str1Hello,World!Python,is beautifulindex1str1.find(P)# 返回12index2str1.find(Python)# 12index3str1.find(python)# -1index4str1.find(Ppp)#-1字符串的一些方法upper() 把字符都变成大写lower() 把字符都变成小写title() 只把开头的字符变成大写元组不能修改的元素组成的列表叫做元组用括号来表示。元组中的元素不可修改但是它可以被遍历、切片、查看元素内容。但是不能修改元组中的值可以把整个元组的值进行修改查看元组中的值中括号索引值元组切片同列表左闭右开区间tuple1(1,2,aaa,True)print(tuple1[0])# 1print(tuple1[1:3])# (2, aaa)tuple1(3,4,5)# 对整个元祖进行修改print(tuple1)# 345字典用大括号包起来的键值对键和值之间用冒号分隔键值对之间用逗号分隔。键的类型可以是字符串、数值、元组等不可变类型必须是可哈希对象因此列表、字典、集合不能做键值可以是任意类型增dict[key]value dict1{name:张三,age:18}print(dict1)dict1[sex]男print(dict1)# {name: 张三, age: 18, sex: 男}删pop(key,default) 和 popitem()pop需要知道要删除的键返回删除键对应的值如果键不存在报KeyError错误popitem不需要传递参数默认删除字典中最后一个元素返回键和值组合成的元组dict1{name:张三,age:18,sex:男}# popvaluedict1.pop(age)# 18print(dict1)# {name:张三,sex:男}# popitemvalue2dict1.popitem()print(value2)# (sex,男) class tupleprint(dict1)# {name:张三,age:18}获取dict[key],注意字典中的key是什么类型此处的key就应该是什么类型遍历常用使用for循环并结合以下方法items() :同时遍历键、值keys() :只遍历键values() :只遍历值dict1{name:张三,age:18,sex:男}forkey,valueindict1.items():print(f{key}-{value})# name-张三 age-18 sex-男forkeyindict1.keys():print(key)# name age sexforvalueindict1.values():print(value)# 张三 18 男更新update(dict) 方法用来更新当前字典,传入的参数是另一个字典或包含键值对可迭代对象元组.传入的参数有三种形式一个字典、关键字参数的形式、可迭代的包含键值对的对象如果dict中的键在当前字典没有的则添加键值对如果有则更新键对应的值dict1{name:张三,age:18,sex:男}dict2{age:20,city:beijing}dict1.update(dict2)print(dict1)# {name: 张三, age: 20, sex: 男, city: beijing}# 包含键值对可迭代对象dict1.update([(career,it),(area,bbb)])print(dict1)#{name: 张三, age: 20, sex: 男, city: beijing, career: it, area: bbb}# 关键字参数的形式dict1.update(age22,areaccc)print(dict1)# {name: 张三, age: 22, sex: 男, city: beijing, career: it, area: ccc}判断ifif elif else多个条件使用and 关键字所有条件都为True时总体才为True;or关键字只要其中一个条件为True结果就是True(not)in关键字用来判断元素是否在容器中这里的容器可以是字符串、列表、元组、集合、字典注意当是字典时判断的是key而不是值。如果想判断值使用字典的 values() 方法dict1{name:张三,age:18,sex:男}print(nameindict1)# Trueprint(张三indict1)# Falseprint(张三indict1.values())# True函数定义def关键字函数名小括号冒号后面的缩进内容函数使用return关键字来返回值调用函数可以需要用一个变量来接收它的返回值如果不写return语句默认返回None;如果只写一个return关键字但后面没有内容也是返回Nonedeffunc_name():return1函数参数传递有两种方式位置参数传递和关键字参数传递使用的这两种可以混用但是位置参数必须在关键字参数前面关键字参数后面不能有位置参数否则会报错deffun_name(name,age,sex):print(f姓名{name},年龄{age},性别{sex})fun_name(zs,18,男)# 位置参数传递fun_name(namezs,age18,sex男)# 关键字参数传递fun_name(zs,age18,sex男)# 位置和关键字参数混用位置参数必须在前关键字参数后面不能有位置参数否则会报错2.1 多个参数时形参和实参的数量不一致时当不知道一个函数要传多少参数时可以使用 **args **或kwargs这两个可装任意参数的大包*args 负责接收任意数量的位置参数打包成元组*代表打包多余的位置参数到名为args的空元组中如何获取这些参数呢使用for循环遍历这些参数**kwargs 负责接收任意数量的关键字参数 打包成字典,代表打包多余的关键字参数到名为kwargs的空字典中如果获取这些参数呢使用for循环结合字典的items方法defposition_arg(a,b,*args):totalabforiinargs:totalireturntotalprint(position_arg(a9,b10))# 19print(position_arg(1,11,14,16))# 42defkeywords_arg(school,**kwargs):all_args{school:school}all_args.update(kwargs)fork,vinall_args.items():print(f{k}-{v})keywords_arg(schoolhaha,productapple,price9999)# school-haha product-apple price-9999keywords_arg(xxx,namezs,age18,sex男)# school-xxx name-zs age-18 sex-男**kwargs还有一个常用的方法结合setattr方法给对象的属性赋值. setattr(object,k,v) 方法用来给对象object设置属性键名是k,值是v如果键不存在则创建如果存在则更新它的值classStudent:passdefset_arg(object,**kwargs):fork,vinkwargs.items():setattr(object,k,v)tStudent()set_arg(t,namezs,age18)print(t.name)# zsprint(t.age)# 18

相关新闻

在 JavaScript 生态中,Lodash 长期被视为“工具函数标准库”,提供数组、对象、字符串、函数增强等大量实用能力

在 JavaScript 生态中,Lodash 长期被视为“工具函数标准库”,提供数组、对象、字符串、函数增强等大量实用能力

在 JavaScript 生态中,Lodash 长期被视为“工具函数标准库”,提供数组、对象、字符串、函数增强等大量实用能力。 Python 虽然没有一个完全等价且统一垄断的“官方 Lodash”,但已经形成了以 pydash、Toolz、funcy、more-itertools 以及标准库…

2026/10/17 14:41:28 阅读更多 →
【老计带你懂线性代数】06:线性变换,矩阵是怎么动空间的

【老计带你懂线性代数】06:线性变换,矩阵是怎么动空间的

【老计带你懂线性代数】06:线性变换,矩阵是怎么动空间的开头:换个视角看矩阵 前面我们把矩阵当成两样东西:一批数据的表格,以及一种变换。数据表格那个视角很好懂,这一篇专门把变换这个视角讲透&#xff0c…

2026/10/16 6:35:54 阅读更多 →
软考架构设计师论文 —— 论AI Agent技术及其应用(6)

软考架构设计师论文 —— 论AI Agent技术及其应用(6)

接前一篇文章:软考架构设计师论文 —— 论AI Agent技术及其应用(5) 本文内容参考: 【爆肝整理】17种AI Agent架构全解析!从ReAct到多智能体系统,小白程序员也能秒懂的Agent设计指南-CSDN博客 特此致谢! 论题 随着大语言模型技术的发展,AI Agent凭借感知、规划、工具…

2026/10/16 6:35:54 阅读更多 →

最新新闻

STM32F103裸机PWM精准输出包:寄存器级1kHz/75%占空比实测<0.3%误差

STM32F103裸机PWM精准输出包:寄存器级1kHz/75%占空比实测<0.3%误差

简介:本资源是一个基于STM32F1系列的双极性SPWM波形生成与控制工程代码包,面向电力电子、嵌入式开发及电机驱动方向的初学者与进阶工程师,解决逆变器系统中高精度正弦波调制信号生成与滤波频率可调的实际问题。压缩包共142个文件,…

2026/10/17 14:41:25 阅读更多 →
Java数据结构与算法分析:递归、大O与链表习题答案精讲

Java数据结构与算法分析:递归、大O与链表习题答案精讲

简介:《数据结构与算法分析(Java语言描述)》第三版习题答案文档,面向正在学习数据结构与算法、需要核对解题思路的Java开发者及计算机专业学生。内容聚焦教材前几章的经典题目,涵盖递归程序设计、数学归纳法证明、文件…

2026/10/17 14:41:25 阅读更多 →
PyTorch入门实战:从张量与自动求导到CNN图像分类

PyTorch入门实战:从张量与自动求导到CNN图像分类

1. 入门之前,先理解PyTorch的设计思路与核心概念 1.1 为什么大家现在都在用PyTorch PyTorch入门这个话题,我在不同场合聊过很多次。带过的朋友里有刚接触编程的大三学生,也有从其他框架转过来的后端工程师,大家问的第一个问题往往…

2026/10/17 14:41:25 阅读更多 →
Hive动态分区为何必须Shuffle?原理与调优实战

Hive动态分区为何必须Shuffle?原理与调优实战

1. 项目概述:为什么动态分区在 Hive 里既香又烫手?“Hive 优化动态分区实现 开启reduce 需要shuffle”——这个标题不是一句技术口号,而是某天凌晨三点我盯着 YARN UI 上卡在 99% 的 MapReduce 任务时,一边灌着第三杯冷咖啡、一边…

2026/10/17 14:41:25 阅读更多 →
SQL Server 游标循环与 FOR 循环实战:TaoToken 统一 Key 下的调试与验证

SQL Server 游标循环与 FOR 循环实战:TaoToken 统一 Key 下的调试与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 14:41:25 阅读更多 →
具身智能进阶开发:从感知到控制的完整技术链路与工程实践

具身智能进阶开发:从感知到控制的完整技术链路与工程实践

做具身智能这几年,我最大的感受是:这个方向不缺热度,缺的是能把系统跑通的人。很多人一上来就追大模型、追VLA,结果连ROS2的坐标变换都没搞明白,仿真环境里物体抓得稳稳的,一上真机就到处乱撞。我之前在团队…

2026/10/17 14:40:24 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →