多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 1.2.1. 高阶函数 变量可以指向函数,可以把函数当作参数传入 ``` # 我们可以把函数本身赋值给变量 x = len x([1,2,3,4]) ``` 这时len是函数对象 **函数名也是变量** 函数名就是就是指向函数的变量,对于len()这个函数来说,我们可以把len看做是变量 **传入函数** 变量可以指向函数,函数可以接受变量。一个函数就可以接受另一个函数作为传入参数 ``` def add(x,y,z): return z(x) + z(y) add([1,2,3,4],[4,3,1,5,6],len) ``` ### 1.2.2. map映射 reduce累计 map接受两个参数,一个是函数,一个是Iterable,函数作用在序列的每一个元素上,并把结果作为Iterable返回 ``` x = [1,2,3,4,5,6,7,8,9,10] def mul(i): return i * i list(map(lambda s : s*s,x)) #结果[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ``` reduce也是把函数作用与序列上,但是这个函数必须接受两个参数,reduce把计算结果继续与下一个元素做累积计算 ``` #对于序列x = [1,2,3,4,5,6,7,8,9,10] from functools import reduce # 对序列进行累计处理,让第一个元素与下一个元素的差再减去第三个元素 reduce(lambda a,b: a-b,x) #结果-53 原因: 1 -2 = -1 -1 -3 = -4 -4 - 4 = -8 ``` ### 1.2.3. filter函数 过滤 filter也是把函数作用在每个序列元素上。根据函数对每个元素判断真假返回布尔值。true保留元素,false删除元素 ``` # 对下列数据只保留能被2整除的数 将filter返回的Iterable变为list x = [1,3,6,7,2,19,20,33,29,10,49] list(filter(lambda s : s%2 ==0,x)) ``` ### 1.2.4. 匿名函数 Lambda 可以使用匿名函数。匿名函数也可以被一个变量保存,也可以不保存直接使用 ``` f = lambda s : s*2 x = [1,2,3,4] map(f,x) ``` ``` list(map(lambda s : s*s,x)) ``` ### 1.2.5. 三元运算 格式: ~~~python [on_true] if [expression] else [on_false] ~~~ ![](https://img.kancloud.cn/b8/88/b888519122f44f9928a16583e302c424_516x145.png)