Python语法及其函数补充

前言

好家伙,怎么用着用着python就发现,之前使用过的python语法和内置函数都不怎么熟练啊,明明以前还很熟练的用过这玩意,过了一段时间再想用它居然都不会用了,完蛋,这样下去还怎么看自己以前的代码啊,快,给爷爬去整理笔记去

本文档主要对不咋地熟练的语法和函数进行复习和补充整理,将以前笔记中该部分内容全部整合于该文档中,后期也会将一些基础常见库的函数补充进来

函数

zip(x,y,…)

  • zip(x,y,…)可以获取多个参数(可迭代对象),返回一个zip类型的内存空间,可以对其进行获取,对其中的多个参数同时进行迭代获取,以下为例子

  • for a , b in zip(c,d):同时获取c,d两个列表的数值,逐个加入a ,b

  • image-20210425104925611

map(function,iterable)

  • 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

  • 把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

  • 例:image-20210425110450255

  • 总所周知,在python中input()会获取控制台中的数值,并默认返回str类型,而经过map函数处理之后,对返回的列表[‘1’, ‘5’]每个参数都使用了int函数,最后全部返回int型,当然也可以使用具有数据处理的函数对列表中每个元素进行处理

reduce(function, iterable[, initializer])

  • 库functools中的函数,可以使用from functools import reduce调用

  • 参数:
    function ----> 函数,有两个参数
    iterable ----> 可迭代对象
    initializer ----> 可选,初始参数

  • 返回值:函数计算值

  • 描述
    reduce() 函数会对参数序列中元素进行累积。
    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

  • 例:image-20210426161047947

int(x,[base])

  • 将一个数字或【base】类型的字符串转化为整数

  • 当x为int型时,将会对x进行向下取整,且此时【base】不能被赋值,否则会报错

  • 当【base】被赋值后,x将只接收字符串,此时可以对int型使用str()函数,接收到的字符串将会以base为基数,将字符串当做一个【base】进制的数,并返回其在十进制下的对应数据,base的取值范围为2~36

  • 例:image-20210425113357620

  • 101在二进制下,被int转化为十进制数,结果为5

  • int(‘0x10‘,16) == 16 ,因为0x在此处被视为16进制的特殊符号,将除开0x之外的10作为16进制基数的数据,转化为十进制的16

filter(function, iterable)

  • 描述:
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

  • 参数:
    function ----> 判断函数。
    iterable ----> 可迭代对象。

  • 返回值:

    返回一个迭代器对象,可以将该迭代器对象进行list()转化后使用

  • 例:

  • image-20210426173609109

列表相关函数

列表增添修改

在这里插入图片描述
extend()参数可以为一个list,传输一个列表到对象列表的末尾。

insert(x = 想要增添在列表上的位置,y = 增添的元素)
增添的位置的原有元素会整体全部向后移动一位。

列表删除

在这里插入图片描述
在这里插入图片描述

  • remove(x),x == 你想删除的元素,若list中有多个 x 则删除第一个 x。

在这里插入图片描述

  • del(x),x == 要删除的元素索引

在这里插入图片描述
pop()函数相当于del()的升级版,还会返回删除的元素值。

元素搜索

  • image-20210425133933406
  • 搜索列表中的元素值,返回元素对应位置的索引值(只能返回该元素出现的第一个位置的索引值)

lambda函数

在之后的函数使用介绍中将会使用lambda函数,所以有必要先介绍这个python中非常常用的内置函数

  • 介绍(特性)

    lambda函数又被称作匿名函数,即没有具体名称的函数,它允许你快速定义一个单行函数并使用,其具有自己独有的函数空间,不能访问自己参数列表之外或者全局命名空间中的参数,能完成较简单的运算功能,以及实现一些独特的功能,方便快捷,简化代码为他的主要功能。

  • 一些示例

  • lambda x, y: x*y			# 函数输入是x和y,输出是它们的积x*y
    lambda:None					# 函数没有输入参数,输出是None
    lambda *args: sum(args)		# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
    lambda **kwargs: 1			# 输入是任意键值对参数,输出是1
    
  • 常见用法

  • 1.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。

    • add = lambda x, y: x+y
      相当于定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add就指向了具有加法功能的函数。
      这时我们如果执行add(1, 2),其输出结果就为 3
  • 2.将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。

# 为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:
time.sleep=lambda x: None
# 这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
# 例如:
time.sleep(3)	# 程序不会休眠 3 秒钟,而是因为lambda输出为None,所以这里结果是什么都不做
  • 3.将lambda函数作为参数传递给其他函数。
    • 可以用在map函数中
    • image-20210426172839917
    • 可以用在reduce函数中
    • image-20210426172952441
    • 可以用在sorted函数中
    • image-20210426173113477
    • 可以用在filter函数中
    • image-20210426173219110

排序函数

sort(),reverse()

  • list.sort()对原列表进行排序,修改原列表数据,默认正序排序(从小到大),因为是对列表直接进行处理,所以要先进行list.sort()才可使用排序过后的list
  • list.reverse()对原列表排列进行倒置,如list = 【1,2,3】–》list = 【3,2,1】

sorted(iterable[, cmp[, key[, reverse]]])

  • 参数说明:
    iterable ----> 可迭代对象。
    cmp ----> 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
    key ----> 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse ----> 排序规则,reverse = True 降序(倒序) , reverse = False 升序(默认)。

  • 返回值:
    返回重新排序的列表。

  • 特殊使用:

    在key参数中使用lambda匿名函数,获取iterable中次级单元的数据,进行对比(可获取多个)

    image-20210426174549169

    同时,若对字典进行排序,可通过.items()将字典 dict 类型转化为 dict_items 类型,即可拥有元组的可对比排列性

    image-20210426175337862

语法

python中对自建包的引用

这是文件结构,我先创建了一个文件夹mai,其中包括一个自带的_init_.py文件,而我自己创建了一个jiafa.py的文件,其中放入了我写的函数,如图:

image-20210310153643167

image-20210310154243988

image-20210310154358937

如图,我从mai这个文件当中引用了jiafa这个py文件并在现在这个运行文件当中使用jia这个名字来使用其,而在调用的时候,直接使用jia.jiafa/jianfa来调用即可。

python引用包h5py对.h5文件操作

.h5类型的文件在神经网络机器学习方向的数据处理具有极其重要的作用

image-20210210190022307

例:

image-20210210190135057的操作就是,从file:train_catvnoncat.h5当中的文件train_set_x提取数据形成到列表train_set_x_orig当中

python的广播化处理

  • 规则

image-20210214161634217

  • 例子

image-20210214162159470

image-20210214162213757

image-20210214162258871

image-20210214162309312

image-20210214162434773

image-20210214162452577

在上图中定义了两个numpy数组a和b,将他们相加,首先因为b数组的维度较a来说不足,由广播处理准则中第一条,b数组的维度会变成(1,5)即[ [1,2,3,4,5] ]

而此时,a,b的维度为(6,1)(1,5)根据规则二,最后的输出数组c应该会被扩展为(6,5)

而根据规则3(规则三应该为:输入数组的某个轴长度若为1或者与输入数组的对应轴长度相同时,若该数组无法计算,则需要进行自修改至可运算)

所以,由规则三和规则四共同修改得:

a的第一轴1被更改为了5,从之前第一轴的第一个数值(如0)在第一轴上开始扩展为5个0image-20210214172637461

b的第零轴1被更改为了6,从之前第零轴的第一个数值【0,1,2,3,4】在第零轴上扩展至6个该数值image-20210214172704712

最后将其相加,结果维度恰好为(6,5)

补充,规则五:适用于广播运算的数据应该是要至少有一个维度是“满的(非0,1)”,另外对应的一个维度为1,或者两个维度都是“满的”(且维度数值要相同)

推导式(循环用)

使用推导式可以在循环当中大大降低时间复杂度

  • 列表推导式

    • a = (i for i in range(1,11))

    • 结果为输出列表 list a [1,2,3,4,5,6,7,8,9,10]

    • 其中,第一个 i 是可以加上其他条件的譬如说改为 i**2

  • 字典推导式

    • 相较于列表推导式,字典推导式的建立要考虑到键值对的搭配
  • image-20210203231429231

切片

  • 切片有第三个参数–步长,步长的作用为按步长跳跃性的提取字符串或列表当中的对应数据,步长为正数则为正序,步长为负则为倒序,默认为1
  • 前两个参数就是正常的取值,在某范围内取
  • image-20210203231508402
  • 若步长为负,则前面两个参数需要变化,因为在负步长的情况下,整个列表会先索引再倒置,之后正向切片,而使用的索引还是倒置之前的索引,所以如图,索引5就为6,而索引1就为2,最后正向切取
  • image-20210329161753876

类的定义

  • image-20210203231543399

  • image-20210203231629524

  • image-20210203231725660

类的继承

负,则前面两个参数需要变化,因为在负步长的情况下,整个列表会先索引再倒置,之后正向切片,而使用的索引还是倒置之前的索引,所以如图,索引5就为6,而索引1就为2,最后正向切取

  • [外链图片转存中…(img-xRXxvdbL-1619616365948)]

类的定义

  • [外链图片转存中…(img-Fv9FAum8-1619616365949)]

  • [外链图片转存中…(img-OvCeM40h-1619616365950)]

  • [外链图片转存中…(img-0LbnWc7B-1619616365951)]

类的继承

  • image-20210203231809172
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值