深度学习实战之Python教程(1)

Python入门教程

    以熟练使用Pytorch完成深度学习模型为目标,简单介绍Pytorch涉及到的Python基础(Python其它知识可以在遇到后再学习,先动手)。
    这篇教程并不涉及Python的复杂方法,教程的结构如下:
    1.Python实例
    2.Python基础
     - 2.1 Python数据类型
     - 2.2 Python语法

    3.Numpy
    4.类
    5.文件读写
    6.错误分析

1.Python实例

    先通过一个Python实例来看一下Python的语法,这里可以看到对于函数,循环,if判断,都是用四个空格缩进来表示函数体或循环体,类似C语言的{},不再缩进就表示退出了函数体,# 表示注释。

# 函数
def add_do(string):
    if "$" not in string:
        string = "$" + string  # 字符串组合
    return string

# 把以下列表中缺少$的都加一个$
test = ["1","16","3","$8","11","$25","77","7","15"]
# 方法1
for i in range(len(test)):
    test[i] = add_do(test[i])  # 修改列表的第i个值
    
print(test)

输出:

['$1', '$16', '$3', '$8', '$11', '$25', '$77', '$7', '$15']

2.Python基础

2.1 Python数据类型
深度学习实战之Python教程(1)_第1张图片

2.1.1数字
    数字用于储存数值,包括整型与浮点型,支持常见的数学运算,对特殊的如sin,cos计算需要引入额外的官方库,后面会有说明。

############### 运算 ################
a = 10
b = 5
print(a/b)

数字常见的方法如下:

# 取整
a = 1.6
b = int(a)  # int是截断取整,若要四舍五入可以用int(a+0.5)
print(b)  # 输出1

# 幂次
a = 10 ** 3
print(a)  # 输出1000

2.1.2字符串
    字符串由任意符号组成,用一对单引号’’或一对双引号””括起,两种写法是一样的。

############### 字符串 ################
a = "abc" 
b = 'abc'
print(a == b)  # 输出True

# 字符串常见运算
# case1 字符串相加
a = "hello"
b = " "  # 空格也是字符串
c = "world!"
print(a+b+c)  # 输出"hello world!"

# case2 去除字符串头尾两端的符号
a = " my name is F! "
print(a.strip())  # 输出"my name is F!"

b = "my name is F!\n"
print(b.strip("\n"))  # 输出"my name is F!"

# case3 替换
a = "mh name is F!"
print(a.replace("h", "y"))  # 输出"my name is F!"

# case4 分割字符串
a = "x1=1,x2=2,x3=3,x4=4"
l = a.split(",")
print(l)  # 输出['x1=1', 'x2=2', 'x3=3', 'x4=4']

练习: 字符串a = ”hello world”, 判断”world”是否在字符串a中。

2.1.3列表(重点)
    列表是Python中最基本最常用的数据结构,也是numpy数组的基础,需要重点掌握。
2.1.3.1列表访问
    列表用[n]符号进行访问,且n从0开始,注意列表截取查询时,写法是a[x:y]表示取x,x+1,x+2…y-1,不包含y这个位置的值,类似于集合的左闭右开[x,y)。

l = [1,2,3,4,5]  # 定义一个长度为5的列表,元素可以为数值,字符串,列表,字典等

# 列表访问,可以正序与倒序访问。
print(l[0])  # 输出1,即列表的第一个元素
print(l[-1])  # 输出5,即列表的最后一个元素
#print(l[5])  # 报错,超出列表范围。

2.1.3.2 列表常用方法

# 列表截取
b = l[1:3]
print(b)  # 输出[2,3],即列表的第1个元素到第3-1个元素

# 列表常用方法
# case1列表添加元素
a = ["a","b","c"]
a.append("d")
print(a)  # 输出['a', 'b', 'c', 'd']

# case2列表删除元素,通过指数删除
a = ["a","b","c"]
del a[0]
print(a)  # 输出['b', 'c']

# case3 求长度
a = [1,2,3,4,5]
print(len(a))  # 输出5

# case4 判断元素是否在列表中
a = ["x","y","z"]
if "x" in a:
    print("x in list a!")

2.1.3.3 列表循环

# 列表循环方法1,不能修改列表中的元素
a = [1,2,3,4,5]
for item in a:
    item=0
print(a) # 输出[1,2,3,4,5]

# 列表循环方法1,可以修改列表中的元素,但是不建议直接修改列表中的元素。
a = [1,2,3,4,5]
for i in range(len(a)):
    a[i]=0
print(a) # 输出[0,0,0,0,0]

2.1.3.4 转化为列表

# 其它数据类型转为列表,几乎万物皆可列表
a = "he wo!"
print(list(a))  # 输出['h', 'e', ' ', 'w', 'o']

a = set((1,2,3)) # 定义集合
print(list(a))  # 输出[1, 2, 3]

练习1: 列表a = [1,2,3],列表b = [3,4,5],问:a+b等于什么?
练习2: 列表a = [[1,2,3],[4,5,6]],列表的size为2*3,访问列表的第一行(最外层),第二列元素(里层)。

2.1.4元组
    元组与列表类似,只是一旦定义后无法更改,元组基本支持列表除了增删操作以外的所有方法。

2.1.5字典
    字典由键与值组成,它们之间一一对应,字典的一一对应是个很重要的特性。
深度学习实战之Python教程(1)_第2张图片

字典的意义:
1.Python用字典查询很快,列表的话需要遍历查找。
2.经常需要存储一一对应的值,比如有十个人,每个人借了几本书,通过字典的人名与书名列表可以用一个变量来储存,不然可能需要十个变量来储存。

练习1: 用一个字典储存字典的意义2中描述的问题。

2.2 Python语法
2.2.1 print
    程序运行时间通常会比较长,中途很多步骤打印结果方便自己知道运行进度,运行结果,如果有错误可以马上停止程序。
    print有以下三种常见方式。

print("hello python!")

print("pi is:",3.1415926)

print("a={0},b={1}".format(1,2))

    字符串的格式化方法.format()比较常用,可以用(1,2,…)中的数据1,2,…替换字符串中的{},按顺序依次替换。

2.2.2 if条件判断

# True,False为bool值,首字母大写
# if判断语句后面冒号,且判断的内容行缩进四个空格
if True:  
    print("True")


a = 10
b = 5
if a > b:
    print("a = ",a)
    print("b = ",b)
    print("a is bigger than b!")
elif a == b:
    print("a = ",a)
    print("b = ",b)
    print("a is equal to b!")
else:
    print("a = ",a)
    print("b = ",b)
    print("b is bigger than a!")

    单个条件的写法有以下三种比较常见,形式不单一,只要if后面跟着判断即可,不过判断的等号要注意是两个等号”==”,例如if a==1:

# 单个条件的写法
if a > b:
    pass

if a in list:
    pass
    
if True:
    pass

# 多条件的写法
if a > b and a > c:
    pass

if a in list and a >b:
    pass

if a >b or a>c:
    pass

2.2.3 for循环
深度学习实战之Python教程(1)_第3张图片

    第一行为循环判断,如果满足条件,则进入循环体,执行完循环体后i自动更新为下一个,再到第一行的判断…
continue:进入循环判断,不执行后面的判断是否等于50以及打印
break:退出循环

练习1 :# 把以下列表中缺少 的 都 在 前 面 加 一 个 的都在前面加一个 符号
test = [“1”,“16”,“3”,"$8",“11”,"$25",“77”,“7”,“15”]

2.2.4 函数
    定义函数的格式如下:

"""
def 函数名(形参1,形参2,...):
    函数内容
    return 结果
"""

    函数的定义与调用实例:

def my_sum(a,b):
    result = a + b
    return result

c = my_sum(1,2)
print(c)

注意:
    后续设置的变量名称不能与函数名重复

2.2.5 import模块
    Python之所以好用,是因为有很多开发者提供了各个领域的模块,从数学运算,地理信息,图像处理各个方面都有“包”提供,基本上都涵盖所需要的代码,所以Python开发者又称为“调包侠”。
    Python是脚本语言,但是一个项目一般不会只有一个.py文件,多个.py文件之间的交互通过import模块来实现。

2.2.5.1 import官方库
    Python官方提供了很多库,比如math,内置很多sin,cos等计算的函数。

"""
方法1:from A import a,b,...
方法1 import的函数可以直接调用

方法2:import A
方法2可以通过点符号来调用A中的函数,有时调用的库名字太长可以用as定义一个缩写

方法3:from A import *
方法3直接把库中的所有函数都import,要慎用,避免与自己的代码变量重名。
"""
# case1
from math import sin,cos
print(sin(1))

# case2
import math as m
print(m.sin(1))

# case3
from math import *
print(sin(1))

2.2.5.2 跨文件调用方法或者类
    创建两个文件,一个test1.py,一个main.py,要在main.py里调用test1.py中的函数。
在test1.py中编写函数主体:
深度学习实战之Python教程(1)_第4张图片

在main.py中调用:
深度学习实战之Python教程(1)_第5张图片

    这里可以看到用from xxx import xxx的形式可以引入其它文件,那问题来了,程序怎么知道test1.py文件在哪里呢?会搜索本地资源吗?test1.py放在哪里该代码才能生效?

你可能感兴趣的:(python,深度学习)