一、递归
1.1 递归的引用场景
递归是一种编程思想
- 特点:
- 函数内部调用函数自己
- 必须有出口
1.2 应用实例
- 代码
# 3 + 2 + 1 def sum_numbers(num): # 1.如果是1,直接返回1 -- 出口 if num == 1: # 出口,否则递归会超出最大深度,从而报错 return 1 # 2.如果不是1,重复执行累加并返回结果 return num + sum_numbers(num-1) sum_result = sum_numbers(3) # 输出结果为6 print(sum_result)
-
递归的执行流程
二、lambda表达式
2.1 lambda的应用场景
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化
2.2 lambda语法
lambda 参数列表 : 表达式
注意:
- lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
- lambda表达式能接收任何数量的参数但只能返回一个表达式的值
2.3 lambda的参数形式
- 无参数
fn1 = lambda: 100 print(fn1())
- 一个参数
fn1 = lambda a: a print(fn1('hello world'))
- 默认参数
fn1 = lambda a, b, c=100: a + b + c print(fn1(10, 20))
- 可变参数: *args
注意:这里的可变参数传入到lambda之后,返回值为元组fn1 = lambda *args: args print(fn1(10, 20, 30))
- 可变参数: **kwargs
fn1 = lambda **kwargs: kwargs print(fn1(name='python', age=20))
2.4 lambda的应用
- 带判断的lambda
fn1 = lambda a, b: a if a > b else b print(fn1(1000, 500))
- 列表数据按字典key值排序
students = [ {'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name': 'Jack', 'age': 22} ] # 按name值升序排列 students.sort(key=lambda x: x['name']) print(students) # 按name值降序排列 students.sort(key=lambda x: x['name'],reverse=True) print(students) # 按age值升序排列 students.sort(key=lambda x: x['age']) print(students)
三、高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。
3.1 体验高阶函数
在Python中, abs() 函数可以完成对数字求绝对值计算。
abs(-10) # 10
round()函数可以完成对数字的四舍五入
round(1.2) # 1
round(1.9) # 2
3.2 内置高阶函数
- map()
map(func, list),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表
(Python2)/迭代器(Python3)返回 - reduce()
reduce(func,list),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做
累积计算。
注意: reduce()传入的参数func必须接接收两个参数 - filter()
filter(func, list)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为
列表, 可以使用 list() 来转换。