1.0递归函数
在一个函数体内部,调用这个函数本身
def fib(n):
if n==1:
return 1
if n==2:
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(90))
2.0匿名函数(lambda)
- 格式
lambda paral,para2,....,paraN:expression using paras(定义函数表达式)
f =lambda x,y,z : x+y+z #x等可以有默认值
print(type(f))
print(f(1,2,3))
#6
3.0高阶函数
高阶函数:把一个函数名,以实参的形式,传递给这个函数的形参,这个函数就成为高阶函数。
def pow(x):
return x**2
def add(a,b,func):
return func(a)+func(b)
a_value = add(-9,1,pow)
print(a_value)
#81
def start(sr):
return sr.startswith('c')
def end(sr):
return sr.endswith('ty')
li = ['zhejiang','university','city','college']
def filter_1(func,para):
ret=[]
for i in para:
if not func(i):
ret.append(i)
return ret
print(filter_1(start,li))
print(filter_1(end,li))
print(filter_1(lambda sr:sr.startswith('c'),li))
#['zhejiang', 'university']
#['zhejiang', 'college']
#['zhejiang', 'university']
4.0filter 函数
f1=filter(lambda sr:not sr.endswith('ty'),li)
print(list(f1))
功能:
- 过滤掉序列中不符合函数条件的元素。当序列需要保留的元素可以用某些函数描述时,就应该想到filter函数。
- 调用格式:
filter(function,sequence)
+ function--->可以是自定义的函数,也可以是匿名函数
+ sequence--->列表,元组,字符串
li = ['zhejiang','university','city','college']
f1=filter(lambda sr:not sr.endswith('ty'),li)
print(list(f1))
#['zhejiang', 'college']
5.0map 映射
功能
- 求一个序列或者多个序列进行函数映射后的值。(用list()强转)
格式:
map(function,iterable1,iterable2)
+function的参数可以不止一个
+itercable1,iterable2 就是传入function的参数