python_day13
1、三元表达式:
*条件成立返回一个值
*条件不成立返回一个值
def max(x,y):
res = x if x>y else y
print(res)
max(10,20)
2、递归
函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接调用函数本身;
def foo():
print(‘666‘)
doo()
def doo():
print(‘hahaha‘)
foo()
foo()
递归分为两个阶段:
1)回溯:
注意:一定要在满足某种条件结束回溯,否则会无限递归
2)递推
def age():
if n == 1:
return 18
return age(n-1)+2
age(5)
items = [1,[2,[3,[4,[5,[]]]]]]
def tell(l):
for item in l:
if type(item) in not list:
print(item)
else:
tell(item)
tell(items)
总结:
1、递归一定要有一个明确地结束条件
2、没进入下一次递归,问题地规模都应该减少
3、在python中没有尾递归优化
匿名函数:
lambda
强调:
1、匿名的目的就是要没有名字,给匿名函数赋予一个名字是没有意义的
2、匿名函数的参数规则、作用域关系与有名函数是一样的
3、匿名函数的函数体通常应是一个表达式,该表达式必须要有一个返回值
max() :循环找出可迭代对象中的最大值
1 sal= { 2 ‘kermit‘:200, 3 ‘alex‘:100 , 4 ‘egon‘:300 5 } 6 7 print(max(sal,key=lambda x:sal[x]))
min() :循环找出可迭代对象中的最小值
1 sal = { 2 ‘b‘:10, 3 ‘a‘:20 4 } 5 6 print(sal,min(key=lambda x:sal[x]))
sorted() :循环可迭代对象,将它们升序、降序
1 salaries={ 2 ‘egon‘:3000, 3 ‘alex‘:100000000, 4 ‘wupeiqi‘:10000, 5 ‘yuanhao‘:2000 6 } 7 8 print(sorted(salaries,key=lambda x:salaries[x])) #升序
9 print(sorted(salaries,key=lambda x:salaries[x] reverse=True)) #降序
map() :循环可迭代对象,将值改变再映射回原位置
1 names=[‘alex‘,‘wupeiqi‘,‘yuanhao‘,‘kermit‘] 2 3 res = map(lambda x:x+‘_sb‘ ,names) #res编程迭代器 4 print(list(res))
5 res = map(lambda x:x+‘_NB‘ if x==‘kermit‘ else x+‘_SB‘,names)
6 print(res)