初学Python-day11 函数4

函数

1.递归函数

自己不断调用自己的过程

 

2.递归求和

1 def sum(arg):
2     if arg == 1:
3         return 1
4     return arg + sum(arg - 1)
5 print(sum(5))

 

3.递归分解

 1 def a(arg):
 2     print(arg)      # 第一步: 3
 3     b(arg - 1)      # 第二步:b(2)
 4     print(arg)      # 第八步: 3
 5 
 6 
 7 def b(arg):
 8     print(arg)      # 第三步:2
 9     c(arg - 1)      # 第四步:1
10     print(arg)      # 第七步:2
11 
12 
13 def c(arg):
14     print(arg)      # 第五步:1
15     print(arg)      # 第六步:1         回到函数调用处
16 
17 
18 a(3)

 

 

 

匿名函数lambda

 

 

1.格式

lambda[参数]:表达式内容

2.定义

不在使用def关键字定义函数,而是使用lambda创建匿名函数

3.特点

--lambda为一个表达式,所以定义比def简单

--lambda主体是一个表达式,而不是代码块,所以只能封装有限的逻辑

--lambda有自己的命名空间

4.示例

1 res = lambda a, b: a + b
2 print(res(1, 2))

 

 

 

高阶函数

 

1.map、reduce函数

---map函数

fn:传递函数

lsd:集合

功能:将传入的函数作用在集合的每一个元素上,并返回iterator

示例:

1 list1 = ['1', '2', '3']
2 def changint(a):
3     print(a, type(a))
4     return int(a)
5 print(list(map(changint, list1)))
6 print(list(map(bool, list1)))
7 print(list(map(float, list1)))

 

--reduce函数

fn:传递为一个函数

lsd:传入集合

功能:传入的集合中的每个元素都会作用在我们传递的函数上,做累加运算,必须传递两个参数。

1 from functools import reduce
2 list1 = list(range(10))
3 
4 
5 def mysum(x, y):
6     print(x, y)
7     return x + y
8 print(reduce(mysum, list1))

 

filter函数

fn:传入函数

lsd:传入集合

用于过滤列表;将列表中的每个元素作用于传入的函数上,根据返回值的true/false来确定是否保留该元素

示例:

1 lis = list(range(1, 11))
2 def fun(i):
3     if not i % 2:
4         return True
5     return False
6 print(list(filter(fun, lis)))

 

去除空字符串

 1 lis = list(range(1, 11))
 2 def fun(i):
 3     if not i % 2:
 4         return True
 5     return False
 6 
 7 lis1 = ['a', 'b',' ', 'c', ' ', '1']
 8 def fun1(i):
 9     return i and i.strip()
10 print(list(filter(fun1, lis1)))

 

sorted函数

lsd:集合

key:排序的规则

作用:将集合中的每个元素作用于key函数上,根据函数结果进行排序。

示例:

1 lis1 = [1, 2, 0, 5, 3, -1]
2 print(list(sorted(lis1)))       # 大小排序
3 lis2 = ['a', 'abc', 'ab', 'abcddd', 'addd']
4 print(sorted(lis2, key=len))    # 按长度排序

 

上一篇:day11-01-pageHelper分页


下一篇:Python文件操作与模块—Python Day11