递归,匿名函数

Posted yf18767106368

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归,匿名函数相关的知识,希望对你有一定的参考价值。

# import sys #模块
# sys.getrecursionlimit() #递归最大层数为1000层.
#sys.setrecursionlimit() #修改递归层数

# def foo():#直接调用
# print("fore you") #执行
# foo() #调用函数,当第一遍结束之后才会关闭,第一次调用执行到目前的foo()调用进入第二次调用,
# 而第一的次调用结束但是没有关闭,是继续开着的与第二次调用互相关联
# foo()#调用函数

# def bre():#间接调用
# print("fore ber")#出现第二个print
# foo()#第三调用,回归foo()定义内
#
# def foo():
# print("fare foo " )#出现第一个print,由bre定义内的foo调用回归到这个print进行打印
# bre()#第二调用
# foo() #第一调用
#整体就像直接调用
# def foo():
# print("fare foo " )#第一打印
# print("fore ber")#第二打印
# foo()#进入调用进行循环
#foo()#调用

# def foo(n):
# print("from foo",n)
# foo(n+1) #默认最大循环是1000层左右,超过会自动关闭报错,
# 而递归最大的用处就是在于每一次的循环更加逼近于最终结果,而非无意义的循环
# foo(0)


# age(5) = age(4) + 2 #递推的需求 #根据递推最后一层的结果回溯后的结果为34
# age(4) = age(3) + 2
# age(3) = age(2) + 2
# age(2) = age(1) + 2
# age(1) = 26 #递推最后一层的结果

#age(n) = age(n-1) + 2 #n > 1 #条件的判断
#age(1) = 26 #n = 1
# def age(n):
# if n == 1:
# return 26 #获得递推答案后,回溯,得到想要的答案
# return age(n-1) + 2 #递推下一层
# print(age(5))

# l=[1,[2,[3,[4,[5,[6,[7,[8,[9]]]]]]]]]
# def tell(l):
# for time in l:#进行for循环出列表
# if type(time) in list:#用type类型判断time的类型是字符串还是列表,
# 这里第一次取得的是字符串1,后面取得的是列表,通过判断后在列表内可以继续循环
# tell(time)
# else:
# print(time)#是字符串就直接打印
# tell(l)



# nums=[1,3,5,7,11,22,34,55,78,111,115,137,149,246,371]
# def search(search_num,nums):#两个参数,一个是需要判断的值,一个是列表
# print(nums) #打印每次循环的列表
# if len(nums) == 0: #判断当列表长度为0的时候结束循环return,表明当前查找的值不在列表内
# print("notexists")
# return
# mid_index=len(nums)//2 #将列表的长度对半整除之后赋值
# if search_num > nums[mid_index]:#判断预判值是大于中间值
# #in the right #如果大于中间值
# nums=nums[mid_index+1:] #那么针对右边的数会再一次对半进行判断,并且赋值
# search(search_num,nums)#循环执行新的判断
# elif search_num < nums[mid_index]:#判断预判值是小于中间值
# #in the left#如果小于中间值
# nums=nums[:mid_index]#那么针对左边的数会再一次对半进行判断,并且赋值
# search(search_num,nums)#循环执行新的判断
# else:
# print("find it")#直到循环结束后获得由在列表内的值
# search(31,nums)

#lambda 匿名函数,匿名函数不能回车,而是全部都写在一行,x,y:x+y
# res=(lambda x,y:x+y)(1,2) #x,y 是形参,(1,2)是实参,x+y是执行代码块
# print(res)#匿名函数不是这么用
# f=lambda x,y:x+y
# print(f(1,2))#匿名函数也不是这么用



#max min sorted filter map 使用方式
# salaries={
# ‘egon‘:3000,
# ‘alex‘:100000000,
# ‘wupeiqi‘:10000,
# ‘yuanhao‘:2000
# }

# max的工作原理
#1 首先将可迭代对象变成迭代器对象
#2 res=next(可迭代器对象),将res当作参数传给key指定的函数,然后将该函数的返回值当作判断依据
# def func(k):
# return salaries[k]#return value
# print(max(salaries,key=func)) #next(iter_s) #显示出来的是key永远不变,能变的是依据什么条件的判断
#‘egon‘, v1=func(‘egon‘)
#‘alex‘, v2=func(‘alex‘)
#‘wupeiqi‘, v3=func(‘wupeiqi‘)
#‘yuanhao‘, v4=func(‘yuanhao‘)

# print(max(salaries,key=lambda k:salaries[k]))#因为只用一次,以后不用,所以用匿名函数lambda 形参(字典的ket):字典[key]=value

# print(min(salaries,key=lambda k:salaries[k]))

# l=[10,1,3,-9,22]
# l1=sorted(l,reverse=False)#False从小到大的排序
# print(l1)
#
# l2=sorted(l,reverse=True)#True从大到小的排序
# print(l2)

# print(sorted(salaries,key=lambda k:salaries[k],reverse=True)) #收入从大到小的顺序排列


# map的工作原理
#1 首先将可迭代对象变成迭代器对象
#2 res=next(可迭代器对象),将res当作参数传给第一个参数指定的函数,然后将该函数的返回值当作map的结果之一
# names=[‘yy‘,‘qq‘,‘pp‘,‘dd‘]
# aaa=map(lambda x:x+"_SB",names) #为所有对象加上后缀并成为迭代器
# print(aaa) #打印可以看出是形成迭代器
# print(list(aaa))#用列表方式可以看到其内容

# print([name+"_SB" for name in names])

# filter的工作原理
#1 首先将可迭代对象变成迭代器对象
#2 res=next(可迭代器对象),将res当作参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下res
# names=[‘aaSB‘,‘dd‘,‘bbSB‘,‘ccSB‘]
#
# print([name for name in names if name.endswith(‘SB‘)])
#
# aaa=filter(lambda x:x.endswith(‘SB‘),names) #按照制定后缀结尾,filter判断函数返回值是否为真,如果为真就留下,
# # 不是就删除.也是迭代器形式,通过list列表来查看
# print(aaa)
# print(list(aaa))

# 掌握
# res=‘你好‘.encode(‘utf-8‘)
# print(res)
#
# res=bytes(‘你好‘,encoding=‘utf-8‘)
# print(res)

# 参考ASCII表将数字转成对应的字符
# print(chr(65))
# print(chr(90))
# 参考ASCII表将字符转成对应的数字
# print(ord(‘A‘))

# print(divmod(10,3))


# l=[‘a‘,‘b‘,‘c‘]
# for item in enumerate(l):
# print(item)

# l=‘[1,2,3]‘
# l1=eval(l)
# print(l1,type(l1))
# print(l1[0])

# with open(‘a.txt‘,encoding=‘utf-8‘) as f:
# data=f.read()
# print(data,type(data))
# dic=eval(data)
# print(dic[‘sex‘])

# print(pow(3,2,2)) # (3 ** 2) % 2

# print(round(3.3))

# print(sum(range(101)))


module=input(‘请输入你要导入的模块名>>: ‘).strip() #module=‘asdfsadf‘
m=__import__(module)
print(m.time())


# 面向对象里的重点
# classmethod
# staticmethod
# property
#
# delattr
# hasattr
# getattr
# setattr
#
# isinstance
# issubclass
#
# object
#
# super


# 了解
# print(abs(-13))
# print(all([1,2,3,]))
# print(all([]))

# print(any([0,None,‘‘,1]))
# print(any([0,None,‘‘,0]))
# print(any([]))

# print(bin(3)) #11
# print(oct(9)) #11
# print(hex(17)) #11

# print(callable(len))

# import time
# print(dir(time)) #列举出所有:time.名字


# s=frozenset({1,2,3}) # 不可变集合
# s1=set({1,2,3}) # 可变集合

# a=1111111111111111111111111111111111111111111111
# # print(globals())
# # print(locals())
# def func():
# x=222222222
# # print(globals())
# print(locals())
# func()

# hash([1,2,3])

# def func():
# """
# 文档注释
# :return:
# """
# pass
#
# print(help(func))

# l=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]
# s=slice(1,4,2)
# print(l[1:4:2])
# print(l[s])

# print(vars())





















































































































































































































































以上是关于递归,匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

七 递归与二分法匿名函数内置函数

递归函数匿名函数

python内置函数匿名函数递归

python匿名函数和递归

11.高阶函数(匿名/*递归/函数式)对象编程基础

第16天 匿名函数,递归,二分法,内置函数