目录
本篇文章所有代码均在Jupyter上运行
1.python在深度学习中的必要性
易用性:Python语言具有简洁、易读和易学的特点,这使得它成为初学者和专业人士的首选。Python的语法结构清晰,代码编写起来相对简单,使得深度学习的实现更加容易。
丰富的库和框架:Python拥有众多用于数据处理、科学计算和机器学习的强大库和框架,如NumPy、Pandas、SciPy和Scikit-learn等。这些库提供了丰富的功能和工具,可以简化深度学习任务的实现和调试过程。
TensorFlow和PyTorch:TensorFlow和PyTorch是目前最受欢迎的深度学习框架,它们都提供了Python的接口和支持。这些框架提供了高效的数值计算和自动微分功能,使得开发人员能够方便地构建和训练深度学习模型。
大数据生态系统:Python在大数据处理方面也有很强的支持。通过使用Spark等大数据处理框架,可以将Python与分布式计算结合起来,以应对大规模数据集的深度学习任务。
社区支持:Python拥有一个庞大而活跃的开发者社区,这意味着你可以轻松地找到解决问题的文档、教程和示例代码。这种社区支持可以帮助你更快地入门和解决遇到的困难。
2.基本变量类型
1.字符串
在Python中,字符串是一种表示文本数据的数据类型。字符串由一系列字符组成,可以是字母、数字、符号或空格的组合。在Python中,字符串是不可变的,这意味着一旦创建,它们不能被修改。
1.创建字符串
a.用单引号或者双引号创建单行字符串
str1='hello world'
str2="hello world"
print(str1)
print(str2)
二者输出结果是相同的,都是hello world,但是不能以str来命名字符串,因为str是字符串的意思,总不能改变str原本的含义吧
b.使用三重引号创建多行字符串,''' '''或者""" """
str1='''hello world,
this is basic'''
str2='''hello world,
this is basic'''
c. 使用转义字符创建特殊字符,即 ' \ '
str1='hello \nworld'
str2='I say \'hello world\''
str3='hello \tworld'
print(str1)
print(str2)
print(str3)
结果为
\n为换行符,\'是为了防止系统误以为这是一个字符串的开始或者结束,而是真正的 ' ,\t是制表符
d.format插入变量
使用字符串的format()
方法将变量的值插入到字符串中。使用大括号({})作为占位符,可以在format()
方法中传递要插入的变量
str1='AHU'
str2='Hefei'
str3="{} is located in {}".format(str1,str2)
print(str3)
结果为
e.f-string(格式化字符串字面值)
在字符串前面加上字母"f",并使用大括号({})内嵌变量名
str1='AHU'
str2='Hefei'
str3=f"{str1} is located in {str2}"
print(str3)
结果为
2.字符串的访问
类似于C语言中的数组,可以使用索引操作符进行访问
str1='hello world'
print(str1[2])
print(str1[-2])
结果为
正值索引从0开始从左往右依次递增,也就是从h开始
负值索引从-1开始从右往左依次递减,也就是从d开始
3.切片操作
使用切片操作符([:])来获取字符串的子串。切片操作返回一个新的字符串,包含指定范围内的字符。
一定是从左往右
str1='hello world'
print(str1[2:3])#从str1[2]开始,截至到str1[3],但不包括str1[3]
print(str1[2:-1])#从str1[2]开始,截至到str1[-1],但不包括str1[-1]
print(str1[-1:-3])#显然从右往左,不符合标准,不存在该字符串
print(str1[:])#输出整个字符串
print(str1[1:])#从str1[1]开始,输出到末尾
print(str1[:3])#从str1[0]开始,输出到str1[3]之前
结果为
此外也可以调整步长,步长默认为1
str1='hello world'
print(str1[::2])
这里步长设置为2,也可以设置为负值,方向相反罢了。
4.字符串拼接
可以使用加号(+)将两个字符串连接起来
str1='hello'
str2='world'
str3=str1+" "+"world"#三个字符串进行拼接
print(str3)
结果为
5.计算字符串的长度
用len()函数
str1='hello'
length=len(str1)#参数位于括号内
length
结果为
2.数字
分为整数型数字和浮点型数字,不做过多赘述,但一定要记得整数之间的运算(如加法、减法、乘法和整数除法)将产生整数结果。而浮点数之间的运算将产生浮点数结果。如果整数与浮点数进行运算,结果将是浮点数。即有浮即浮,无浮即整。
1.常用运算符
和C语言的运算符相比功能要完善一些
3.布尔型
即True和False
满足条件是True,不满足则是False
a=1
print(a>=2)#a是否大于等于2
print(a==1)#a是否等于1
print(a in [1,2,3])#a是否在这个列表中
结果为
同时布尔型经常与逻辑运算符有关,主要有以下三种
逻辑与(AND):
- 表示为
and
。- 当两个操作数都为真时,结果为真;否则结果为假。
逻辑或(OR):
- 表示为
or
。- 当两个操作数中至少有一个为真时,结果为真;否则结果为假。
逻辑非(NOT):
- 表示为
not
。- 对一个操作数取反,如果操作数为真,则结果为假;如果操作数为假,则结果为真。
4.基本变量类型之间的转换
字符串、整数、浮点数、布尔型四者之间可以无缝切换。
1.转换为字符串使用str函数;
a=123 b=123.0 c=True str1=str(a) str2=str(b) str3=str(c) str1,str2,str3
结果为三个字符串
这里未用print输出是因为print输出字符串会默认删掉引号,不方便读者直接看出数据类型,当然也可以用type()函数检测变量类型
2.转换为整数型数字使用int函数;
a=1.5 b='123' c=True num1=int(a) num2=int(b) num3=int(c) num1,num2,num3
结果为
浮点数会被舍弃小数点后的数字,字符串必须里面是一个数字,True就是1,False就是0
3.转换为浮点型数字使用float函数;
a=1 b='123' c=True num1=float(a) num2=float(b) num3=float(c) num1,num2,num3
结果为
即相当于int后在小数点后加个0
4.转换为布尔型使用bool函数。
只有当字符串为空、数字为0、集合为空、 元组为空、列表为空、字典为空时,结果才为False,否则均为True。
3.高级变量类型
1.集合
集合是无序的、不可重复的元素的组合。在深度学习中很少用到,就不做较多的赘述。
可以使用大括号 {}
或者 set()
函数来创建一个集合。
set1={1,2,3,4,3}#不重复原则
set2=set([1,2,3,4])#实质是对列表进行类型转换,转换成集合
print(set1)
print(set2)
结果为
此外还有一些操作,了解就行,用不到
- 交集(Intersection): 返回两个集合中都包含的元素。 &
- 并集(Union): 返回两个集合中所有不重复的元素。I
- 差集(Difference): 返回一个集合中存在而另一个集合中不存在的元素。-
- 对称差集(Symmetric Difference): 返回两个集合中不重复的元素。^
- 添加元素:add()
- 移除元素:remove()
- 清空集合:clear()
- 存在:in
- 不存在:not in
2.元组
元组(Tuple)是一种有序且不可变的数据结构,用于存储一组元素。元组可以包含任意类型的元素,包括数字、字符串、元组本身等。元组的元素之间使用逗号分隔,并且通常使用小括号 ()
来表示。
1.创建方式
主要是省略括号法与规范括号法
tuple1=1,2,3
tuple2=('1',2,4.0,(1,2))#包含四个元素,而不是五个
print(tuple1)
print(tuple2)
结果为
2.输出中的元组法
有点类似于C语言中printf输出,但是不需要标明类型
a='ahu'
b='school'
print(a,'is a ',b)#括号内部相当于一个有着三个元素的元组
结果为
细心的读者可以发现,a后应该只有一个空格,但是结果中却有两个空格,这就是它的缺点。所以在上述介绍到字符串的输出时并没有介绍这种方法。
3.元组拆分法
即可以快速拆分元组,可以拆分为任意个对象
tuple1=(1,2,3,4)
a,b,*c=tuple1#带*号表明可以容纳任意个参数,a,b只是单个数据变量,c是列表
print(a)
print(b)
print(c)
结果为
3.列表
列表用[ ]表示,与元组还是类似的,可以包含不同类型的数据。
但是可以用索引值访问元素,和字符串的访问类似
切片操作也与字符串的类似,最重要的是切片是不受其影响的,就不做过多赘述
添加功能也类似于字符串
还有一个复制功能( * )
list1 = [1,2,3]
print( list1 * 2 )#复制两倍的自己
print( list1 * 4 )# 复制四倍的自己
结果为
4.字典
是升级版的列表,用大括号表示,多了个键,也就是升级版的索引
keys:values
元素值可以是任意变量,但索引只能是数字或者字符串
1.访问
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict['name'])
结果为
Alice
2.修改,添加与删除
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
my_dict['name']='Bob'#修改
print(my_dict['name'])
my_dict['sex']='girl'#添加
print(my_dict['sex'])
del my_dict['sex']#删除
print(my_dict['sex'])
结果为
报错是因为sex对应的键值已经删除
5.高级变量类型之间的转换
集合、元组、列表、字典四者之间可以无缝切换,需要用到四个函数
1. 转换为集合使用set函数;
2. 转换为元组使用tuple函数;
3. 转换为列表使用list函数;
4. 转换为字典使用dict函数。
4.基本逻辑语法
与C语言类似,只给出模板,大家应该很快就能理解
1.判断语句
if 布尔值:
情况一
elif 布尔值:
情况二
else:
其它情况
2.for循环
对于列表,可以让循环变量依次取遍列表中的每个元素
for 循环变量 in 列表:
循环体
对于字典,既可以遍历索引,也可以遍历值,更可以都遍历
for keys,values in 字典:
循环体
3.while循环
while循环用于不断运行,直 到布尔条件从True转为False。
while bool:
循环体
此外continue用于中断本轮循环并进入下一轮循环,在for和while中均有效。
break用于停止循环,跳出循环后运行后续代码。