一、三元表达式应用:
1、条件成立返回一个值
2、条件不成立返回一个值
def age(n):
return 18 if n==1 else age(n-1)+2
print(age(5))
二、递归
函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身
def bar()
print('form bar')
fucn()
def func()
print('from func')
bar()
func()
递归分两个阶段
1、回溯:
一定要在满足某种条件结束回溯,否则无限递归
2、递推
总结:
1、递归一定要有一个明确地结束条件
2、每进入下一次递归,问题的规模都应该减少
3、在python中没有尾递归优化
def age(n):
if n==1:
return 18
return age(n-1)+2
age(5)
items=[1,[2,[3,[4,[5,[6]]]]]]
def tell(1):
for item in l:
if type(item) is not list:
print(item)
else:
tell(item)
tell(items)
三、匿名
强调:
1匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的
2匿名函数的参数规则、作用域关系与有名函数是一样的
3匿名函数的函数体通常应该是一个表达式,该表达式必须要有一个返回值
a=lambda x,y:x**y
print(a(2,4))
lin={
'aa':1000,
'bb':233,
'cc':133,
'dd':500
}
lin=sorted(lin,key=lambda x:lin[x])
print(lin)
lin=max(lin,key=lambda x:lin[x])
print(lin)
lin=min(lin,key=lambda x:lin[x])
print(lin)
name=[1,2,3,4,]
res=map(lambda x:x**2,name)
print(list(res))
name=['alex','wxx','yh']
res=map(lambda x:x+'nb'if x=='yh'else x+'sb',name)
print(list(res))
res=map(lambda x:x+'nb',name)
print(list(res))
from functools import reduce
res=reduce(lambda x,y:x+y,range(1,101))
print(res)
l=['my','name','is']
res=reduce(lambda x,y:x+''+y+'',l)
print(res)
ages=[11,20,67,22]
res=filter(lambda x:x>=20,ages)
print(list(res))
names=['aa','ab','ca']
res=filter(lambda x:x.endswith('a'),names)
print(list(res))
内置函数