Pytorch深度学习教程_1_Python基础快速掌握

news/2025/2/15 15:44:20/

欢迎来到PyTorch深度学习教程系列!在本系列中,我们将从零开始学习如何使用PyTorch进行深度学习开发。本篇是系列的第一篇,我们将快速掌握Python编程基础,为后续的深度学习学习打下坚实的基础。

对于深度学习环境配置及pytorch的下载安装可以用我写的博客:

2025最新深度学习pytorch完整配置:conda/jupyter/vscode-CSDN博客

在后面的实践中会使用jupyter或者vscode,大家可以提前用这篇教程配置好!


快速掌握,核心在于快:把这些都运行一遍基本上是对python有了非常全面的认识了。

目录

1.数据类型

数字(Numbers)

字符串 (str)

布尔值 (bool)

2.数据结构:组织你的数据

列表 (Lists)

 元组 (Tuples)

字典 (Dictionaries)

集合 (Sets)

选择合适的数据结构

3.操作数据结构

访问元素

修改元素

添加和删除元素

迭代元素

4.控制流

条件语句

循环

break 和 continue 语句

常见问题和最佳实践

5.函数

定义函数

参数和实参

返回值

作用域和全局变量

递归函数

匿名函数(Lambda 函数)

6.面向对象编程

理解对象和类

关键 OOP 概念

创建对象

继承

多态

OOP 的好处

挑战和最佳实践

7.结语


1.数据类型

可以把数据类型看作Python程序的构建块。它们定义了你可以存储和操作的信息类型。理解这些基本数据类型对于有效的数据处理至关重要。

数字(Numbers)

整数 (int)‌:没有小数点的整数,例如 -2, 0, 5。
浮点数 (float)‌:有小数点的数字,例如 3.14, -2.5。
复数 (complex)‌:具有实部和虚部的数字,例如 2+3j。

python">x = 10  # 整数 (int)
y = 3.14  # 浮点数 (float)
z = 2 + 3j  # 复数 (complex)

字符串 (str)

字符串是字符的序列,用单引号或双引号括起来。

python">name = "Alice"  # 定义一个字符串
greeting = 'Hello, world!'  # 另一个字符串示例

布尔值 (bool)

布尔值表示真或假,只有两个值:True 和 False。

python">is_adult = True  # 布尔值 True
is_raining = False  # 布尔值 False

2.数据结构:组织你的数据

数据结构是存储数据集合的容器。Python提供了几种内置的数据结构。

列表 (Lists)

列表是有序的项目集合,可变(可以更改)。

python">fruits = ["apple", "banana", "cherry"]  # 定义一个列表

 元组 (Tuples)

元组是有序的项目集合,不可变(不能更改)。

python">colors = ("red", "green", "blue")  # 定义一个元组

字典 (Dictionaries)

字典是无序的键值对集合。

python">person = {"name": "Alice", "age": 30, "city": "New York"}  # 定义一个字典

集合 (Sets)

集合是无序的唯一元素集合。

python">numbers = {2, 3, 5, 7}  # 定义一个集合

选择合适的数据结构

选择数据结构取决于具体任务。

  • 列表:当你需要存储可以修改有序项目集合时使用。
  • 元组:当你需要存储不能修改有序项目集合时使用。
  • 字典:当你需要存储键值对以便高效查找时使用。
  • 集合:当你需要存储唯一元素并执行集合操作时使用。

3.操作数据结构

Python提供了多种方法和操作来处理数据结构。

访问元素

  • 列表和元组:使用索引访问元素。
  • 字典:使用键访问值。
python">print(fruits[0])  # 输出 "apple"
print(person["name"])  # 输出 "Alice"

修改元素

  • 列表和字典:可以修改元素。
python">fruits[1] = "orange"  # 修改列表中的元素
person["age"] = 31  # 修改字典中的值

添加和删除元素

  • 列表:使用 append()insert() 添加元素,使用 remove()pop() 删除元素。
  • 集合:使用 add() 添加元素,使用 remove() 或 discard() 删除元素。
  • 字典:使用新的键值对添加元素,使用 pop() 删除元素。
python">fruits.append("grape")  # 在列表末尾添加元素
numbers.add(11)  # 在集合中添加元素
del person["city"]  # 从字典中删除键值对

迭代元素

使用循环遍历数据结构中的元素。

python">for fruit in fruits:print(fruit)  # 遍历列表并打印每个元素for key, value in person.items():print(key, ":", value)  # 遍历字典并打印键值对

4.控制流

条件语句

条件语句允许程序根据条件的真假来执行不同的代码块。

  • if 语句:如果条件为真,执行代码块。

python">age = 25
if age >= 18:print("你已经成年了。")
  • if-else 语句:如果条件为真,执行一段代码;否则,执行另一段代码。
python">age = 17
if age >= 18:print("你已经成年了。")
else:print("你还是未成年人。")
  • elif 语句:用于检查多个条件。
python">score = 85
if score >= 90:print("优秀!")
elif score >= 80:print("很好!")
else:print("需要改进。")

循环

循环允许程序重复执行某段代码。

  • for 循环:遍历序列(如列表、元组、字符串等)。

python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)
  • while 循环:只要条件为真,就重复执行代码块。
python">count = 0
while count < 5:print(count)count += 1

break 和 continue 语句

  • break:终止循环。
  • continue:跳过当前迭代,继续下一次迭代。
python">numbers = [1, 2, 3, 4, 5]
for number in numbers:if number == 3:breakprint(number)

常见问题和最佳实践

缩进:Python 使用缩进来定义代码块,通常使用 4 个空格。
无限循环:使用 while 循环时,确保条件最终会变为假。
清晰性:使用有意义的变量名和注释,提高代码可读性。
嵌套循环:避免过多嵌套,保持代码可维护性。

 

5.函数

函数是程序中的小程序,用于封装特定任务,使代码更有序、可重用且易于理解。

定义函数

使用 def 关键字定义函数,后跟函数名、括号内的参数和冒号。函数体需要缩进。

python">def greet(name):"""向某人问好。"""print("你好,", name, "!")

参数和实参

  • 参数:函数定义中定义的变量。
  • 实参:调用函数时传递的值。
python">def add(x, y):"""加法函数。"""return x + yresult = add(3, 4)  # 调用函数并传递实参
print(result)  # 输出:7

返回值

函数可以使用 return 语句返回值。

python">def square(number):"""返回一个数的平方。"""return number * numbersquared_value = square(5)
print(squared_value)  # 输出:25

作用域和全局变量

  • 局部变量:在函数内定义的变量。
  • 全局变量:在函数外定义的变量。
python">global_variable = 10def my_function():local_variable = 5print(global_variable)  # 访问全局变量# print(local_variable)  # 在作用域外访问局部变量会引发错误my_function()

递归函数

函数可以调用自身,形成递归函数。

python">def factorial(n):"""计算非负整数的阶乘。"""if n == 0:return 1else:return n * factorial(n - 1)

匿名函数(Lambda 函数)

使用 lambda 关键字定义匿名函数。

python">double = lambda x: x * 2
result = double(5)
print(result)  # 输出:10

通过掌握函数,你可以编写更清晰、高效且易于维护的 Python 代码。

6.面向对象编程

面向对象编程(OOP)是一种编程范式,围绕“对象”的概念旋转。它是一种强大的方法,用于建模现实世界中的实体及其交互。

理解对象和类

  • 对象:类的实例,表示现实世界的实体,具有属性(数据)和行为(方法)。
  • :创建对象的蓝图,定义其属性和方法。
python">class Dog:def __init__(self, name, breed):self.name = nameself.breed = breeddef bark(self):print(f"{self.name} 汪汪叫!")

关键 OOP 概念

  • 封装:将数据(属性)和操作数据的方法捆绑在一个单元(对象)中。
  • 继承:创建新类(子类)继承现有类(父类)的属性和方法。
  • 多态:不同类型的对象可以像同一类型一样被对待。
  • 抽象:关注重要特征,隐藏实现细节。

创建对象

要创建对象,你需要实例化一个类。

python">my_dog = Dog("Buddy", "Golden Retriever")
my_dog.bark()  # 输出:Buddy 汪汪叫!

继承

python">class Mammal:def __init__(self, name):self.name = namedef breathe(self):print(f"{self.name} 正在呼吸。")class Cat(Mammal):def purr(self):print(f"{self.name} 在咕噜咕噜叫。")class Dog(Mammal):def bark(self):print(f"{self.name} 正在汪汪叫。")

多态

python">def make_sound(animal):animal.make_sound()cat = Cat("Whiskers")
dog = Dog("Buddy")make_sound(cat)  # 输出:Whiskers 在咕噜咕噜叫。
make_sound(dog)  # 输出:Buddy 正在汪汪叫。

OOP 的好处

  • 代码复用性:继承促进代码复用。
  • 模块化:对象是自包含单元,使代码更易于管理。
  • 封装:保护数据免受意外修改。
  • 多态:使代码更灵活和可扩展。

挑战和最佳实践

  • 过度工程化:避免创建不必要的类。
  • 代码可读性:编写清晰简洁的代码,使用有意义的名称。
  • 测试:彻底测试你的面向对象代码。

通过理解和应用 OOP 原则,你可以创建更复杂且易于维护的 Python 程序。

7.结语

这样很快的就把python的整个框架学完了,当然,这个只供入门,熟能生巧是很重要的!

下次我们会深入一点,当然,你想直接开始深度学习,这很快了! 


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

相关文章

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲 dijkstra(堆优化版) 题目 https://www.programmercarl.com/kamacoder/0047.%E5%8F%82%E4%BC%9Adijkstra%E5%A0%86.html 小明参加科学大会 思路 思路 朴素版的dijkstra&#xff0c;时间复杂度为O(n^2)&am…

逻辑回归不能解决非线性问题,而svm可以解决

逻辑回归和支持向量机&#xff08;SVM&#xff09;是两种常用的分类算法&#xff0c;它们在处理数据时有一些不同的特点&#xff0c;特别是在面对非线性问题时。 1. 逻辑回归 逻辑回归本质上是一个线性分类模型。它的目的是寻找一个最适合数据的直线&#xff08;或超平面&…

进阶版MATLAB 3D柱状图

%% 1. 数据准备 % 假设数据是一个任意形式的矩阵 % 例如&#xff1a;5行 x 7列的矩阵 data [3 5 2 6 8 4 7;7 2 6 9 3 5 8;4 8 3 7 2 6 9;6 1 5 8 4 7 2;9 4 7 3 6 2 5];% 定义行和列的标签&#xff08;可选&#xff09; rowLabels {Row1, Row2, Row3, Row4, Row5}; % 行标签…

强化 CSS 样式优先级的多种方法

一、CSS样式优先级的基础规则 在 CSS 中&#xff0c;优先级的计算主要依赖于选择器的权重。权重越高&#xff0c;优先级越高。 CSS 选择器的权重计算规则 CSS 选择器的权重由以下部分组成&#xff1a; 1. 行内样式&#xff1a;style"..."&#xff0c;权重为 1000。…

Azure从0到1

我能用Azure做什么? Azure提供100多种服务,能够从在虚拟机上运行现有应用程序到探索新的软件范式,如智能机器人和混合现实。许多团队开始通过将现有应用程序移动到在Azure中运行的虚拟机(VM)来探索云。将现有应用程序迁移到虚拟机是一个良好的开端,但云不仅仅是运行虚拟…

后台管理系统前端搭建

版本 node&#xff1a;v20.11.1pnpm&#xff1a;10.2.1vue: 3.5.13vite: 创建git仓库 以下是在gitee创建了“admin-template” https://gitee.com/gzcltech/admin-template初始化项目 pnpm create vuelatest选择如下 4. clone模板 git clone https://gitee.com/kailong1101…

【BUG】conda虚拟环境下,pip install安装直接到全局python目录中

问题描述 conda虚拟环境下&#xff0c;有的虚拟环境的python不能使用&#xff08;which python时直接使用全局路径下的python&#xff09;&#xff0c;且pip install也会安装到全局路径中&#xff0c;无法安装到conda虚拟环境中。 解决方案 查看虚拟环境的PIP缓存默认路径&…

微信小程序实战项目001:NBA球队太阳队简介

文章目录 1、效果预览2、项目起步3、首页开发4、球队页面开发5、球员页面开发6、球员详细信息页面开发7、完整项目下载1、效果预览 首页: 球队: 球员: 球员详细信息: 2、项目起步 不同版本的HBuilderX可能方式略微不同,且生成的默认文件也不同,这里的HBuilderX版本是2…