栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深度学习关于Python必须要会的内容(二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习关于Python必须要会的内容(二)

前言:
今天的前言我想用一句话来概括,希望对大家有所启发,“我始终相信上天安排我去哪里读书,错过谁遇见谁,吃了什么亏,都自有他的道理,没有遗憾不叫人生,没关系的,反正大家都是泪流满面却又抬头往前走的人!”

正文开始,我今天主要是想梳理一下关于AI深度学习过程中,编程语言Python的基础和进阶知识,希望给后面的学习进行铺垫,分为两部分,第一部分是关于Python基础,第二部分关于Python进阶,其实Python语言并不用培训机构老师一个知识点一个知识点的去教你,你只要知道常用的operation就可以了,比如说你是一个厨师,你没有必须要会所有的菜谱,你只需要知道洗菜、烧菜、常用调味料,具体的菜品可用借鉴百度的做法,如法炮制即可。

第一部分.Python 基础
关于对一门语言的学习,你需要发问的是以下三个问题,她的常用数据类型是什么、流程控制怎么写,以及函数定义怎么去定义,有同学会问为什么你要用‘她’而不是‘它’,因为编程语言是有强大生命力的,Python一直在融入生活并且不断的在和其他的语言进行竞争
1.Python包含八大基本数据类型

int 、float、 bool、str、list、tuple、dict、set
#int/float/bool不必多少,相比大家也都知道

2.关于str、list、tuple、dict、set必须要会的操作
2.1关于字符串

# 关于字符串操作学会切片和替换
str = 'loveo'

# 切片下标第一个是你要切的开始位置,切几个就加几,比如你切'ove',第一个是o下标是1,切三个元素就是4,可以推出[1:4]
print(str[1:4])  # ove

# 替换利用str.replace(old, new, max),其中max指的是最大的替换次数,repalce替换不改变原串,会生成一个新串
newstr = str.replace('o', '2', 1)
print(str)  # loveo
print(newstr)  # l2veo
同时补充一下两个字符串之间的拼接'+'即可

2.2关于列表

# 列表的操作主要会添加一个元素append,添加一个列表'+',替换元素可以直接根据下标进行替换,切片和str一样
l1 = ['l', 'o', 'v', 'e', 'o']
l2 = ['l', 'o', 'v', 'e', 'o']
# 添加一个append,append会直接修改原串
l1.append(2)
print(l1)  # ['l', 'o', 'v', 'e', 'o', 2]
# 添加一个列表用’+‘
print(l1 + l2)  # ['l', 'o', 'v', 'e', 'o', 2, 'l', 'o', 'v', 'e', 'o']
# 替换列表元素用下标
l1[0] = 1
print(l1)  # [1, 'o', 'v', 'e', 'o', 2]
# 切片同str操作
print(l1[1:4])  # ['o', 'v', 'e']

2.3关于元组(不灵活)

元组只支持下标查询和切片,不支持增删改操作

2.4关于字典

# 字典操作主要会添加、获取所有的key和value
dic = {'name': 'xiuci', 'age': 18}
# 添加
dic['like'] = 'game'
print(dic)  # {'name': 'xiuci', 'age': 18, 'like': 'game'}
# 获取所有的key和value
print(dic.keys())  # dict_keys(['name', 'age', 'like'])
print(dic.values())  # dict_values(['xiuci', 18, 'game'])
# 修改value
dic['name'] ='ded'
print(dic) #{'name': 'ded', 'age': 18, 'like': 'game'}

2.5关于集合

知道{1,2,3,4,5}这种大括号里面直接包裹元素的是集合类型就可以

3.Python流程控制(判断+循环+函数)
Python的语法糖看的是相同语法块有同等的缩进
3.1常规判断(if-elif-else):

a = 3
if a == 4:
    print("a=4")
elif a == 2:
    print("a=2")
else:
    print('a==3')

3.2循环

list = ['a', 'b', 'c', 'd']
for i in list:
    print(i)  # a b c d
for i in range(len(list)):
    print(i)  # 0 1 2 3

# 事实上,有逼格的选手都会用while来控制数字循环,用for来控制列表中的元素循环
index = 1
while index <= len(list):  # 用外层循环来控制事件需要迭代的次数
    for value in list:  # 用内层循环来控制事件发生的状态
        print(value)
    index += 1  #要用'+='

3.3函数
如果有人问你函数的作用是什么,请大声的喊出来"降低冗余"

def add(x, y):
    return x + y
# 函数定义参数如果有默认值要放在后面,写函数传参带上参数名称(别人看你的代码风格就比较好)
def adddefault(x, y=1):
    return x + y
print(add(x=1, y=2))
print(adddefault(x=1))
# 如果你不确定用户传入几个参数,可能是1,a等数字字符,也可能是x=1,y=a指定参数名的参数
# 用*args关键字(接受没有指定参数名的值)和**kwargs来接受(指定参数名的值)
# 传进来*args是一个元组,**kwargs是一个字典
def add(*args, **kwargs):
    print(args)  # (1, 'a')
    print(kwargs)  # {'x': 3, 'y': 'b'}
add(1, 'a', x=3, y='b')

4.类与面向对象

# python类
class User:
    usertype = '中国大陆'

    def __init__(self, username, password):  # 1.所有需要传入类的参数都要放在__init__方法中
        self.username = username
        self.password = password

    def getusername(self):
        print(self.username)  # 2.调用传入参数,必须使用self.参数名

    def getpassword(self):
        print(self.password)


c1 = User('zhangsan', '123456')  # 3.实例化的时候需要传入参数
print(c1.usertype)  # 中国大陆
c1.getusername()  # zhangsan
c1.getpassword()  # 123456


class VipUser(User): #继承父类
    def __init__(self, username, password, viplevel):
        super().__init__(username, password)
        # 4.用super继承父类的实例化方法,只需要添加子类需要实例化的参数就可以
        # 换句话说不需要重写实例化方法
        # self.username = username
        # self.password = password
        self.viplevel = viplevel

    def operation(self):
        print(f'{self.username}是VIP客户且VIP等级是{self.viplevel}')


c2 = VipUser('若彤', '1314', 1)
print(c2.usertype)  # 中国大陆
c2.getusername()  # 若彤
c2.getpassword()  # 1314
c2.operation()  # 若彤是VIP客户且VIP等级是1

5.操作文件

# Python对文件进行操作主要会读和写,其余操作实际工作中百度
# with主要用来解决文件读取是异常检测的,比如文件读取未关闭等
with open('hh.txt', 'r') as f1:
    listall = f1.readlines()  # readlines将文件每一行保存为一个列表
for i in range(len(listall)):
    # 对每一行内容进行操作,这里去除每一行后面的n
    listall[i] = listall[i].rstrip('n')
print(listall)  # ['吃不了爱情的苦,做你的小松鼠', '你叫老公的时候,我仿佛看见了光']
# 写文件,这里用w,没有文件就自动创建文件,有文件会自动清空写入
# 喜欢将一行内容获取到然后保存成列表,再用循环写入
with open('hhs.txt', 'w') as f2:
    for i in range(10):
        data = [str(i) + 'n']  # writelines传入的必须是一个可迭代对象,这里用列表包裹,n让写入的时候记得换行
        f2.writelines(data)

第二部分.Python进阶
1.字符串转变量,元组、列表、字典的转换与生成式

# 生产链:元组->列表->字典
# 1.刚开始的最小量必须是一个元组
t1 = ('a',1)
t2 = ('b',2)
# 2.将所有的元组存到列表中
index = 1
l1 = []
while index<=2:
    arg = 't'+str(index) #先将字符串拼成变量名
    print(arg)
    print(eval(arg)) #返回变量名所对应表达式的值/也可以理解通过eval将字符串真正变成变量
    l1.append(eval(arg))
    index += 1
print(l1)
# 3.将带元组的列表转为字典
d1 = {k:v for (k, v) in l1}
print(d1)
# 除此之外面试也可能考到list的生成式
l = [i for i in range(10) if i % 2 == 0]
print(l)  # [0, 2, 4, 6, 8]

2.在一定情况下我们希望将列表传入类对象中,并期待类对象是可迭代对象。

class Ob(object):
    def __init__(self, mylist):
        self.mylist = mylist

    def __getitem__(self, item):  # 该方法将类对象变成一个可迭代对象
        return self.mylist[item]


ob1 = Ob([1, 5, 3])
print(dir(ob1))  # 查看对象所定义的所有属性方法
for i in ob1:
    print(i)  # 1 5 3
注意一点,可迭代对象和迭代器是两个不同的概念,比如list,list是可迭代对象,但是没有next方法,所以它不是一个迭代器

3.关于生成器和装饰器这里一句话概括

生成器关键字yield不是在函数被调用时返回表达式的值,而是next函数调用时才返回表达式的值,和return不同。
装饰器主要是为了优化代码结构,在不修改被装饰函数的情况下给被装饰函数添加一些新功能。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号