【今日学习】
一、匿名函数
匿名函数是相对于有名函数而言,有名函数的存在是为了可以重复在不同位置调用,匿名函数因为在定义时没有名称,只有内存地址,就像一个没有名字的人一样,他可以干活,但你不知道他的名字时就不好叫他干活,但只有一个人知道,那就是在定义时这个人可以使用一次。
匿名函数的使用:
匿名函数往往跟其它类型的函数一起使用,这里包括max(取最大值)、min(取最小值)、reduce(合并)、sorted(排序)、filter(过滤)、map(映射)
注意:返回的值在Python3中返回的是对象
二、函数递归与二分法
1、递归本质就是一个循环的过程,
但是递归必须满足两个原则:
1. 每进入下一层递归,问题的规模必须有所减少
2. 递归必须有一个明确的结束条件或者说有一个明确的进入下一层递归的条件
并且递归有两个明确的阶段
1. 回溯: 一层一层地递归调用下去
2. 递推: 再某一层结束掉递归,然后一层一层返回
2、 为何要用递归:
在某些情况下,基于递归来使用重复的过程比while循环更加简单
# 递归举例1:
# age(5)=age(4)+2
# age(4)=age(3)+2
# age(3)=age(2)+2
# age(2)=age(1)+2
# age(1)=18
# age(n)=age(n-1)+2 # n>1
# age(1)=18 # n=1
def age(n):
if n == 1:
return 18
return age(n-1)+2
res=age(5)
# return第一次返回的值是age(4)+2,第二次返回的值是(age(3)+2),res=(age(3)+2)+2.........
print(res)
# 函数递归举例2:
# 取出列表中的值
list1=[1,[2,[3,[4,[5,[6,[7,[8,[9,10,11]]]]]]]]]
def func(l):
for i in l:
if type(i) is list:
func(i)
else:
print(i)
func(list1)
# 这里列表是不断在变化的,所以列表是变量
三、面向过程编程
核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么...
基于该思想编写程序脑子里应该始终思考过程二字,就好比在设计一条流水线,是一种
机械式的思维方式
优点:复杂的问题的流程化,进而简单化
缺点:扩展性差
【知识点领悟】
1. 匿名函数是相对于有名函数而言,有名函数的存在是为了可以重复在不同位置调用,匿名函数因为在定义时没有名称,只有内存地址,就像一个没有名字的人一样,他可以干活,但你不知道他的名字时就不好叫他干活,但只有一个人知道,那就是在定义时这个人可以使用一次。
2.递归两个原则:
第一、每进入下一层递归,问题的规模必须有所减少
第二、递归必须有一个明确的结束条件或者说有一个明确的进入下一层递归的条件
注意:(在写代码时注意什么是变化的量,这个变化的量必须在符合条件时会结束,但在调用的时候必须有一个明确的值)