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

2.初识网络代码——python基础代码

Python深度学习入门:从基础语法到PyTorch实战

1. Python语言简介

Python是一门简洁、易读、功能强大的高级编程语言,以其接近人类自然语言的语法特点而广受欢迎。在深度学习领域,Python凭借其丰富的科学计算库(如NumPy、PyTorch、TensorFlow)和简洁的语法,成为了研究和开发的首选语言。

Python的核心优势:

  • 语法简洁:代码可读性高,学习曲线平缓
  • 生态丰富:拥有庞大的第三方库支持
  • 跨平台:可在Windows、Linux、macOS等多个操作系统上运行
  • 社区活跃:遇到问题可以快速找到解决方案

对于深度学习初学者来说,掌握Python基础是进入AI领域的必经之路。本文将从Python基础语法讲起,逐步深入到深度学习所需的NumPy和PyTorch库的使用。

2. Python基础数据结构

在Python中,数据结构是组织和存储数据的方式。掌握以下五种基本数据类型是编写Python程序的基础:

2.1 数值类型:整型与浮点型

整型(int)用于表示整数,浮点型(float)用于表示小数。Python的变量使用非常灵活,无需显式声明类型。

# 整型示例a=3# Python的变量使用之前不需要声明,而是根据内容自动分配类型# a = 3.0 按Ctrl+/可以快速注释选中代码print(a)b=4print(b)print(a,b)a,b=b,a# Python支持多变量赋值,这是Python特有的简洁语法print(a,b)

运行结果:

浮点型示例

name="ligekaoyan"# 字符串可以用单引号或双引号print(name)print(name[2])# 字符串支持索引访问,索引从0开始

运行结果:

2.2 列表(List)

列表是Python中最常用的数据结构之一,用于存储有序的元素集合。

2.2.1 基础用法
# 列表 list []list1=[1,2,3,4,5]print(list1)print(list1[2])# 访问第三个元素(索引从0开始)print(list1[-1])# 负索引是Python中非常强大的功能,-1表示最后一个元素dict1={"name":"ligekaoyan","age":28,20:80}# 字典list2=[1,"art",dict1]# 列表可以嵌套其他数据类型,包括字典print(list2)

运行结果:

2.2.2 列表的切片、插入与删除

切片操作是Python列表的强大功能,可以方便地获取子列表:

list1=[1,2,3,4,5]foreachinlist1:print(each)print(list1[1:4])# [2, 3, 4],左闭右开区间print(list1[0:4])# [1, 2, 3, 4]print(list1[1:-1])# [2, 3, 4],-1表示最后一个元素print(list1[1:])# [2, 3, 4, 5],冒号后不写默认到末尾print(list1[:])# [1, 2, 3, 4, 5],复制整个列表foreachinlist1[1:4]:print(each)

运行结果:

删除操作

list2=[1,2,3,10,5]print(list2)list2.remove(10)# 删除指定值的元素print(list2)list2=[1,2,3,10,5]dellist2[3]# 删除指定索引的元素print(list2)

运行结果:

增加操作

list2=[1,2,3,4,5]list2.append(7)# 在末尾添加一个元素print(list2)list2.extend([8,9])# 在末尾添加另一个列表的所有元素print(list2)# 列表推导式:快速构建列表的简洁语法list2=[iforiinrange(1,10,2)]# 生成1到9的奇数列表print(list2)# 等价写法list3=[]foriinrange(10):list3.append(i)print(list3)

运行结果:

2.3 字典(Dictionary)

字典是Python中的键值对集合,类似于其他语言中的Map或哈希表。

# 字典 dict {}# 格式:key : valuedict1={"name":"ligekaoyan","age":28,20:80}# 键可以是字符串、数字等不可变类型print(dict1["name"])# 用key作为索引来访问valueprint(dict1["age"])print(dict1[20])

运行结果:

字典的特点:

  • 键必须是不可变类型(字符串、数字、元组)
  • 值可以是任意类型
  • 通过键快速访问值,时间复杂度为O(1)

3. Python基本语句与流程控制

要掌握一门编程语言,首先需要理解其四种基础语句类型:赋值语句、条件判断、循环语句和函数定义。这些构成了程序逻辑的骨架。

3.1 赋值语句(陈述)

赋值语句用于给变量分配值,这是最基本的操作。Python支持多种赋值方式:

  • 简单赋值:a = 3
    ÿ09- 多重赋值:a, b = 1, 2
    ÿ09- 链式赋值:a = b = c = 0

3.2 条件判断(if语句)

条件判断让程序能够根据不同的情况执行不同的代码块,这是实现逻辑控制的基础。

a=3ifa==3:# 条件后面必须有冒号print("正确的")# Python中使用缩进来表示代码块,通常使用4个空格print("今天天气不错")ifa==4:print("错误的1")print("错误的2")# 这行不属于任何if语句,总是会执行

运行结果:

嵌套条件判断

a=3b=4ifa==3:ifb>3:print("b大于3")else:print("b不大于3")# Shift+Tab可以取消缩进

运行结果:

None值的判断

A=None# None表示空值,类似于其他语言中的nullifA==None:print("A为空")

运行结果:

3.3 循环语句

循环用于重复执行某段代码,Python提供了forwhile两种循环。

for循环

# for i in 可迭代对象list1=[1,2,3,4,5]foriinlist1:print(i)

运行结果:

range()函数:生成一个整数序列,常用于控制循环次数

foriinrange(10):# [0, 10),不包含10print(i)print("----------")foriinrange(1,10,2):# 从1开始,到10结束(不包含),步长为2print(i)

运行结果:

遍历字典

dict1={"name":"ligekaoyan","age":28,20:80}print(dict1)foreachindict1:# each是常用的遍历变量名print(each)# 打印keyprint(dict1[each])# 打印value

运行结果:

while循环

i=0whilei<10:# 相比C语言,Python的while语句少括号多冒号i=i+1# Python没有i++语法print(i)

运行结果:

3.4 函数

函数是组织代码的基本单元,可以提高代码的复用性和可读性。

基本算术运算

a=3b=2print(a+b)# 加法print(a-b)# 减法print(a*b)# 乘法print(a/b)# 除法,返回浮点数print(a//b)# 整除(向下取整除法),和C语言除法类似print(a**b)# 幂运算,a的b次方

运行结果:

自定义函数

# 计算a的平方defmyfunc1(a):c=a**2returnc a=3print(myfunc1(a))# 计算a的b次方defmyfunc2(a,b):returna**b a=3b=3print(myfunc2(a,b))# 默认参数:如果传入b就返回a的b次方,否则返回a的平方defmyfunc3(a,b=2):returna**b a=3print(myfunc3(a))# 使用默认参数b=2print(myfunc3(a,3))# 传入b=3

运行结果:

函数设计原则:

  1. 单一职责:一个函数只做一件事
  2. 参数明确:参数名要有意义,必要时添加类型提示
  3. 返回值清晰:明确函数返回什么
  4. 文档注释:使用docstring说明函数功能

5.numpy库的作用

numpy深度学习中非常重要的一个库

importnumpyasnp#进行缩写list1=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]print(list1)array1=np.array(list1)#转化为矩阵print(array1)array2=np.array(list1)array3=np.concatenate((array1,array2),axis=1)#拼接,axis=1横向拼接(向右),axis=0竖向拼接(向下)print(array3)

结果


切片

list1=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]print(list1)array1=np.array(list1)#转化为矩阵#矩阵的切片功能更强大print(list1[1:3])print(array1[1:3,1:3])#跳着切idx=[1,3]print(array1[:,idx])

结果

6.torch库与tensor

6.1张量

张量是一个升级版矩阵,它能表示的维度更多,它的计算速度更快

importtorchimportnumpyasnp list1=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]print(list1)array1=np.array(list1)#转化为矩阵print(array1)tensor1=torch.tensor(list1)#转化为张量print(tensor1)print(tensor1.shape)

结果

张量可以用来求梯度

#求梯度x=torch.tensor(3.0)x.requires_grad_(True)#告诉张量,需要求梯度,否则求梯度时会报错y=x**2y.backward()#求梯度print(y)print(x.grad)# x.grad.zero_() #清空梯度,否则会累加y2=x**2y2.backward()print(y2)print(x.grad)

这里没有情况梯度,第二次的梯度结果是错误的

再来看清空之后的情况

#求梯度x=torch.tensor(3.0)x.requires_grad_(True)#告诉张量,需要求梯度y=x**2y.backward()#求梯度print(y)print(x.grad)x.grad.zero_()#清空梯度,否则会累加y2=x**2y2.backward()print(y2)print(x.grad)

结果

6.2张量的创建与求和

#创建张量tensor1=torch.ones(10,4)#创建全1张量print(tensor1)tensor2=torch.zeros(10,4)#创建全0张量print(tensor2)tensor3=torch.rand(10,4)#创建随机张量print(tensor3)tensor4=torch.normal(mean=10,std=1,size=(10,4))#创建正太分布张量print(tensor4)#求和tensor1=torch.ones(10,4)sum1=tensor1.sum(dim=1,keepdim=True)#dim 1求行和,keepdim=True 保留维度print(sum1)print(tensor1.shape)

结果

6.3引用

我们不会在一个文件里面完成所有工作,可以通过引用来传递数据

frommytensorimporttensor1#引用会把mytensor先运行一遍frommyclassimportsupermanprint(tensor1)lige=superman('ligekaoyao',28)

结果

7.总结

总的来说,通过本课学习,了解了python基础的数据结构,基本语句,类与继承,numpy,tensor,torch等

我终于对类与继承这些面向对象编程的内容有所了解

http://www.gsyq.cn/news/1488906.html

相关文章:

  • 计算机小程序毕设实战-ssm基于springboot+微信小程序的中小学生个性化阅读平台小程序的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 若依框架导出Excel合并行功能详解:从注解配置到源码改造的完整指南
  • 手机 Vibe Coding 半年,终于从能跑到真爽了
  • 终极杀戮尖塔模组管理器:3步开启无限游戏可能
  • 合并采集数据图片进展AI识别
  • 蓝牙LE纽扣电池供电设计:峰值电流抑制硬件方案与KW47软件优化
  • Navicat无限试用终极指南:macOS用户必备的14天限制破解方案
  • 网盘限速太折磨?试试这个神奇的网盘直链提取工具
  • 信创环境避坑实录:在飞腾2000+银河麒麟V10上,用Docker 19.03.9部署达梦8.1数据库
  • BetterNCM-Installer:网易云音乐插件一键安装的终极解决方案
  • 2026年铝型材厂家推荐榜:广东/深圳工业铝型材、散热器/异型铝型材、定制开模与精密挤压实力品牌深度解析 - 品牌发掘
  • 软件工程导论期末自救指南:一张思维导图+一套高频考点速查表,3天搞定复习
  • RT600低功耗模式实战:从原理到测量,打造超长续航嵌入式系统
  • 深度解析Mac Mouse Fix:让10美元鼠标在macOS上超越触控板的革命性方案
  • 2026年 3,5-二硝基苯甲酸/硝基苯甲酸源头厂家推荐:高纯度合成与精细化工领域实力工厂精选 - 品牌发掘
  • 终极iOS越狱指南:3步完成palera1n工具安装与配置
  • 2026年6月最新 北京门窗定制品牌排行:硬核实力与落地案例解析 - 奔跑123
  • 基于MC68HC11E9的步进电机控制系统:从汇编编程到硬件驱动全解析
  • 2026年在职心理学博士优选机构盘点(含学制学费、报考条件) - 品牌测评鉴赏家
  • Skill的实现方式:让 Agent 学会“开挂“
  • Confluence介绍
  • 力扣刷题#11:LeetCode128最长连续序列_刷题笔记
  • 氛围感满分!在厦门,拍一套治愈一辈子的海景婚纱照 - 奔跑123
  • 国产PCB厂家综合实力排行,这5家值得关注
  • 系统架构设计师-计算机系统组成与层次化存储体系深度解析
  • 如何免费使用Duplicity存档编辑器:缺氧游戏存档修改完整指南
  • Markdown 阅读器全平台精选(只看.md 文件 / 兼顾读写分开推荐)
  • 广州番禺上门回收黄金奢侈品,价格公道服务好速度快 - 花生花生1
  • 2026年 3-(1,4-丁炔二醇)-磺丙基醚单钠盐(丁醚嗡盐)厂家推荐:电镀镍中间体核心原料,高纯度与稳定性深度解析 - 品牌发掘
  • Java数据结构——二叉树(Binary Tree)详解