DAY16学习笔记
匿名函数
什么是匿名函数:匿名函数就是没有名字的函数,只能在定义时使用一次。
为何要用匿名函数:强调:匿名函数的定义就相当于只产生一个变量值,而没有绑定任何名字。
所以在定义完就会被回收,无法重复使用,只能在定义时使用一次。
应用:当某一个功能仅使用一次就没有再重复使用的必要时,就应该将其定义为匿名函数。
如何用匿名函数:lambda x,y:x+y()
可以与max,sorted,map,reduce,filter等函数连用。
max: salaries={ }
print(max(salaries,key=lambda k:salaries[k]))
sorted: salaries={ }
print(sorted(salaries,key=lambda k:salaries[k]))
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))
map: names = ['alex', 'wupeiqi', 'yuanhao', 'kevin', 'hu老师']
new_names=[]
for name in names:
new_names.append(name+'dsb')
print(new_names)
reduce: names=['alex_dsb','wxx_sb','kevin_sb','hu_sb','egon']
from functools import reduce
print(reduce(lambda x,y:x+y,[i for i in range(101)],100))
filter: res=filter(lambda name:name.endswith("sb"),names)
print(res)
print(list)
函数递归与二分法
什么是函数递归:函数的递归调用是函数嵌套调用的一种特殊形式,特殊在调用一个函数的过程中又直接或间接的调用了该函数本身。
递归本质就是一个循环的过程,但是递归必须满足两个原则
每进入下一层递归,问题的规模必须有所减少。
递归必须有一个明确的结束条件或者说有一个明确的进入下一层递归的条件。
并且递归有两个明确阶段
回溯:一层一层的递归调用下去。
递推:在某一层结束掉递归,然后一层一层的返回。
为何要用递归:在某些情况下,基于递归来使用重复的过程比while循环更加简单。
如何用递归:age(n)=age(n-1)+2
age(1)=18
def age(n):
if n == 1:
return 18
return age(n-1)+2
res=age(5)
print(res)
list1=[1,[2,[3,[4,[5,[6,[7,[8,[9,]]]]]]]]]
def func(l):
for item in l:
if type(item) is list:
func(item)
else:
print(item)
func(list1)
二分法:二分法是一种算法,算法是如何高效解决问题的思路。
面向过程编程
核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么。
基于该思想编写程序脑子里应该始终思考过程二字,就好比在设计一条流水线,是一种。
机械式的思维方式。
优点:复杂的问题的流程化,进而简单化。
缺点:扩展性差。