day 13三元表达式、递归、匿名

一、三元表达式应用:

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))

内置函数






原文地址:https://www.cnblogs.com/lg04551/p/8693081.html