一、递归函数
函数递归调用(特殊嵌套调用):在函数本身调用过程中直接或间接调用
递归必须有两个明确的阶段。
递归:强调每递归调用一层,进入下一层,就要减少递归问题的规模。
回溯:递归必须有明确的终止条件,如果满足该条件,递归必须结束
开始逐层追溯
递归的精髓在于通过不断的重复接近最终结果
示例:使用递归实现列表二分法查找元素
有从小到大排列的整数列表
Nums=[1,3,711,22,34,55,78,111,115,137,149,246,371]
Def search (search _ num,nums) :
Print(nums)
If len(nums)==0:
Print('not exists ')
Return
Mid_index=len(nums) //2
if search _ num nums[mid _ index]:
# in the right
nums=nums[mid _ index 13360]
搜索(search _ num、nums)
elif search _ numnums[mid _ index]:
# in the left
Nums=nums[:mid_index]
搜索(search _ num、nums)
Else:
Print('find it ')
搜索(31,nums)
第二:匿名函数
1: #著名函数:基于函数名重用
2: #匿名函数:没有绑定名称的结局一次性收回
# f=ram BDA x、y : x y
# print(f)
# print(f(1,2))
第三:与ram BDA函数#max min map filter sorted一起使用的常用内置函数
Salaries={
Egon':3000,
Alex ' :10000000,
吴佩琪' :10000,
元昊:2000
}
# max的工作方式
#1首先将可重复对象更改为迭代器对象
#2 res=next(迭代器对象)将res作为参数传递给key中指定的函数,并使用函数的返回值作为判断标准
# def func(k):
# return salaries[k]
# print (max (salaries,key=func)) # next (ITER _ s)
#'egon ',v1=func('egon ')
# ' Alex ',v2=func(' Alex ')
#'wupeiqi ',v3=func('wupeiqi ')
# '元浩',v4=func('元浩')
Res=max (salaries,key=lambda key 3360 salaties[key])#与lambda函数一起挑选工资最高的人
打印(RES)
Print (min (salaries,key=lambda k 3360 salaries[k]))# next(ITER _ s)#提取最低工资的人的原则与max相同
# salaries={
# 'egon':3000,
# 'alex':10000000,
# 'wupeiqi':10000,
# '元昊' :2000
#}
# print (sorted (salaries,key=lambda k3360 salaries [k],reverse=true)) #按薪资对字典中的人物排序,reversse
# map的工作原理
#1 首先将可迭代对象变成迭代器对象
#2 res=next(可迭代器对象),将res当作参数传给第一个参数指定的函数,然后将该函数的返回值当作map的结果之一
# aaa=map(lambda x:x+"_SB",names)
# print(aaa)
# print(list(aaa))
# filter的工作原理#过滤函数
#1 首先将可迭代对象变成迭代器对象
#2 res=next(可迭代器对象),将res当作参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留 下res
names=['alexSB','egon','wxxSB','OLDBOYSB']
# print([name for name in names if name.endswith('SB')])#列表推到式取出以SB结尾的名字
aaa=filter(lambda x:x.endswith('SB'),names)#使用过滤函数取出以SB结尾的名字
print(aaa) #迭代器对象
print(list(aaa))
四:其他需要掌握的内置函数:
1,bytes
# res='你好'.encode('utf-8')#将unicode字符转成字节类型
# print(res)
# res=bytes('你好',encoding='utf-8')#直接用bytes可以转换
# print(res)
2,chr 参考ascii表将数字转成字符,ord将字符转换成对应的数字
# 参考ASCII表将数字转成对应的字符
# print(chr(65))
# print(chr(90))
# 参考ASCII表将字符转成对应的数字
# print(ord('A'))
3,divmod 求商和余数
# print(divmod(10,3))#打印结果为3余1
4,enumerate 枚举
# l=['a','b','c']
# for k ,item in enumerate(l):
# print(k,item)
5, eval 把字符串中的表达式拿出来运行一下
# l='[1,2,3]'
# l1=eval(l)#将列表形式的字符串取出来,拿到一个列表,可以依靠索引取值,多用于从文件中取出列表,字典之类的 数据类型
# print(l1,type(l1))
# print(l1[0])
6,pow
# print(pow(3,2,2)) #与 (3 ** 2) % 2类似,先平方再求余
7,round 四舍五入
# print(round)) #结果为3
#print(round))#结果为4
8,sum求和函数
# print(sum(range(101))) #1到100的值
9,—import— 用来导入以字符串形式输入的模块
module=input('请输入你要导入的模块名>>: ').strip() #module='asdfsadf'
m=__import__(module)
prin())
五:其他需要了解的内置函数
1, # print(abs(-13)) #求绝对值的方法
2, # print(all([1,2,3,])) #全部为True则为真
3, # print(all([])) #空的可迭代对象为真
4, # print(any([0,None,'',1])) #有一个为True则为True
5, # print(any([0,None,'',0])) #False
6, # print(any([])) #空列表为假
7, # print(bin(3)) #11 #十进制转换成二进制
8, # print(oct(9)) #11 #十进制转成八进制
9, # print(hex(17)) #11 #十进制转成十六进制
10,# print(callable(len)) #函数是否能被调用
11, # import time
12, # print(dir(time)) #列举出所有:time.名字
13, # s=frozenset({1,2,3}) # 不可变集合
14, # s1=set({1,2,3}) # 可变集合
15, # # print(globals()) #查看全局变量
16, # # print(locals()) #查看局部变量
17, # hash([1,2,3]) #是否可以被hash
18, # def func():
# """
# 文档注释
# :return:
# """
# pass
# print(help(func)) #help函数查看一个函数的帮助文档
19, # l=['a','b','c','d','e']
# s=slice(1,4,2) #类似于先定义一个切片方式,以后可以方便连续使用
# print(l[1:4:2])
# print(l[s])
20,# print(vars())#返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。
1.《(如何bin文件转换成chr文件)如何将文件转换成pdf》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《(如何bin文件转换成chr文件)如何将文件转换成pdf》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3217252.html