欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

递归调用、二分法、匿名函数和内置函数

程序员文章站 2023-12-21 23:10:40
...

递归调用

递归调用

1、在调用一个函数的过程中,直接或者间接又调用该函数本身,称为递归调用
2、递归必备的俩个阶段:

1、递推
2、回溯

#修改最大递归层数
import sys
print(sys.getrecursionlimit())
sys.setrecursionlimit(2000)
print(sys.getrecursionlimit())
l=[1,[2,[3,[4,[5,[6,[]]]]]]]
def func(l):
    for item in l:
        if type(item) is list:
            func(item)
        else:
            print(item)
func(l)
###########################################
#age(3)=age(2)+2
#age(2)=age(1)+2
#age=18
#age(n)=age(n-1)+2
#age(1)=18
def age(n):
    if n == 1:
        return 18
    return age(n-1)+2
res=age(200)
print(res)

二分法

匿名函数

1、有名的函数,可以重复调用,匿名函数就相当于只有一个内存地址
2、匿名函数指声明了一个内存地址,直接打印就能看到函数的返回值
3、
max,min,sorted,map,reduce,filter

lambda函数
salaries={
    'egon':3000,
    'alex':100000000,
    'wupeiqi':10000,
    'yuanhao':2000
}
#有名字的函数:
def my_sum(x,y):
    return x+y
print(my_sum(1,2))

#使用匿名函数:
print((lambda x,y:x+y)(1,2))


print(max(salaries,key=func))#key=func('egon')

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

#如:
def sayhi(n):
    print(n)

sayhi(5)
(lambda n:print(n))(5)

calc=lambda n:3 if n <4 else n
print(calc(5))

def lam(n):
    calc=[3 if n <4 else n ]
lam(5)
Max,min函数

for 循环salaries,取出字典的key,key=func,当做参数传给func,把func函数的返回值,赋值给key,当做比较依据。

#max,min
def func(k):
    return salaries[k]
print(max(salaries,key=func))#key=func('egon')
print(max(salaries,key=lamdba k:salaries[k]))
print(min(salaries,key=lamdba k:salaries[k]))
sorted函数:
# sorted,
print(sorted(salaries,key=lambda k:salaries[k]))
#reverse=True的意思是取反的意思
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))

#如:
a={4:2,1:0,10:-121,-4:-21}
print(sorted(a))
print(sorted(a.items()))
print(sorted(a.items(), key=lambda x:x[1]))
>>>
>[-4, 1, 4, 10]
[(-4, -21), (1, 0), (4, 2), (10, -121)]
[(10, -121), (-4, -21), (1, 0), (4, 2)]
map函数,映射
# map,
names=['alex','wupeiqi','yuanhao']
# l=['%s_sb'%name for name in names ]
# print(l)
g=map(lambda name:'%s_db'%name,names)
# print(list(g))
print(next(g))
print(next(g))
print(next(g))
filter函数,过滤功能
# filter
names=['alex_sb','wupeiqi','yuanhao']
#filter(lambda x:if x.endswith('sb'),names) #第二个参数为迭代器,然后使用for循环names,x:后面判断下值里面是否是sb
filter(lambda x:x.endswith('sb'),names)
reduce函数,合并
# reduce,
from  functools import reduce
reduce(lambda x,y:x+y,range(100))
print(reduce(lambda x,y:x+y,range(100)))

内置函数

需要掌握的函数

divmod #意思是第一个值除第二个字,等于多少余一个多少
print(divmod(1002,25))
enumerate #打印每一个vlues的index,值
l=['a','b','c']
for i in l:
    print(l.index(i),i,)

for i,v in enumerate(l):
    print(i,v)
eval #把字符串类型的列表转换为list
res=eval('[1,2,3,4,5,6]')
print(res,type(res))
#exec  #单纯的执行str
res=exec('[1,2,3,4,5,6]')
print(res,type(res))
pow #pow #2的3次方,除3取余
res=pow(2,3,3)
print(res)
round #round #四舍五入
print(round(2.5))

了解的

print(abs(-1)) #数字取绝对值

print(all([1,2,'a','z'])) #全部为真就为真
print(all([None])) #为假的有False、None、0

print(bin(11))  #转换二进制
print(hex(11))  #转换十六进制

import os
# print(dir(os))  #返回这个模块可用的内置函数

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

print(hash('xxx')) #转换为hash
相关标签: 匿名函数

上一篇:

下一篇: