一个函数的参数中有函数作为参数,这个函数就为高级函数。

下面学习几个常见高级函数。

---------------------------------------------------------------------------------------

一、map()

传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

举例:

有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> def f(x):
... return x * x
...
>>> r = map(f, [, , , , , , , , ])
>>> list(r)
[, , , , , , , , ]

即list每一个元素都执行了函数f的操作

-------------------------------------------------------------------------------------

二、filter()

传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

和map()类似,不过这里就要求函数的返回值必须是布尔型

举例:

在一个list中,删掉偶数,只保留奇数

def is_odd(n):
return n % == list(filter(is_odd, [, , , , , , , ]))
# 结果: [, , , ]
把一个序列中的空字符串删掉,可以这么写:

def not_empty(s):
return s and s.strip() list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
# 结果: ['A', 'B', 'C']

-------------------------------------------------------------------------------------

三、reduce()

一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

举例:

>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [, , , , ])
25 过程就是先计算1+3 返回4 ,再根据这个结果+5 ,依次计算,就相当于1+3+5+7+9=25

-------------------------------------------------------------------------------------

四、sorted()

排序函数,数字按有小到大排列,字符串由ASCII大小排列

1、基础用法:

>>> sorted([, , -, , -])
[-, -, , , ]
>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']

2、函数key参数用法:

即将元素先按key对应的函数一个个处理完之后在进行排序

下面,先将list的元素一个个绝对值处理,然后排序

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

>>> sorted([, , -, , -], key=abs)
[, , -, -, ]

下面,先将list的元素字母都小写,然后排序

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

3、函数reverse参数用法,是否结果反转

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

Python函数式编程(二):常见高级函数的更多相关文章

  1. python 函数式编程:高阶函数,map/reduce

    python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...

  2. Python函数式编程:内置函数reduce 使用说明

    一.概述 reduce操作是函数式编程中的重要技术之一,其作用是通过对一个集合的操作,可以从中生成一个值.比如最常见的求和,求最大值.最小值等都是reduce操作的典型例子.python通过内置red ...

  3. Python函数式编程:内置函数map()使用说明

    一.概述 map操作是函数式编程中的重要技术之一,其作用就是对一个集合中的每个元素做处理,生成一个新的元素,由这些新的元素组成一个新的集合的返回. 所以map操作后,产生的新集合的元素个数和原集合的元 ...

  4. python函数式编程之高阶函数学习

    基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用 ...

  5. 【python】python函数式编程、高阶函数

    1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并            返回. def f(x): r ...

  6. Python“函数式编程”中常用的函数

    1.map(func,seq[,seq,...]) 对序列中的每个元素应用函数,python2中map()返回的是列表,python3中返回的是迭代器,可以用list()转换成列表.以下例子为pyth ...

  7. Learning Python 012 函数式编程 1 高阶函数

    Python 函数式编程 1 高阶函数 高阶函数 Q:什么是高阶函数? A:一个函数接收另一个函数作为参数,这种函数就称之为高阶函数. 简单举个例子: def add(x, y, f): return ...

  8. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

  9. Python函数式编程——map()、reduce()

    文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...

随机推荐

  1. android发布新版忘记keystore(jks)密码终极解决方案

    android app签名是使用的keystore文件/jks文件,如果是eclipse是keystore,android studio则是jks,如果忘记了的话很悲催: 1.找到密码 2.改应用的包 ...

  2. [原创] 详解云计算网络底层技术——虚拟网络设备 tap/tun 原理解析

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在云计算时代, ...

  3. Go Slice 使用中的小陷阱

    go中的切片有两个特性: 底层的数据结构是数组 type slice struct { array unsafe.Pointer len int cap int } 包括从切片和数组派生出来的切片都是 ...

  4. JavaScript逗号操作符

    今天在CSDN看到一篇文章http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices?re ...

  5. vue android低版本 白屏问题 你是不是用了Object.assign ??

    问题描述 在部分比较低版本的手机中,发现apk安装后白屏,但是大部分手机都能安装. 本人在使用android4.4时候,也是安装后打开白屏. 原因: 代码写法不兼容 this.user = Objec ...

  6. mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

  7. mysql字符串查找(统计客源)

    如客源状态为1:2:3:5:6:9,其中6代表成交状态 如果要统计查询出有6这个状态的客源,可以用函数LOCATE(字符,搜索的字符串)来, 示例:统计每个分组下全部客源数total,成交客源数dea ...

  8. Linux 命令 —— iconv 转换编码

    iconv 是 Linux 系统自带的用于转换文件编码的命令行工具. 命令参数 使用 iconv --help 命令查看命令帮助信息: 用法: iconv [OPTION...] [-f ENCODI ...

  9. 巨杉数据库 MySQL兼容项目正式开源

    9月7日.8日,2018  ODF 开源数据库论坛,在北京盛大开幕.在大会上,巨杉数据库正式发布了巨杉全新的MySQL/MariaDB兼容架构,并将项目正式开源. 开源数据库论坛(ODF)是中国开源数 ...

  10. MySQL系列详解七:MySQL双主架构演示-技术流ken

    前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...