python 内建了map()和reduce()函数。
map:
map()函数接收两个参数,一个是函数,另一个是序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]上,就可以用map()实现:
>>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]
map()传入的第一个参数是f,即函数对象本身,第二个参数就是要执行的序列。
所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
Reduce:
reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4
比方说对一个序列求和,就可以用reduce实现:
>>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25
当然求和运算可以直接用Python内建函数sum(),没必要动用reduce。 但是如果要把序列[1, 3, 5, 7, 9]变换成整数13579,reduce就可以派上用场:
>>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 3, 5, 7, 9]) 13579
filter:
python 内建的filter()函数用于过滤序列。
和map类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是 False决定保留还是丢弃该元素。
例如,在一个 list中,删除偶数,只保留奇数:
def is_odd(n): return n%2==1 filter(is_odd,[1,2,3,4,5,6,7,8,9,10,15])#结果:[1,5,9,15]
把一个序列中的空字符串去掉:
def not_empty(s): return s and s.strip() filter(not_empty, ['A', '', 'B', None, 'C', ' ']) # 结果: ['A', 'B', 'C']
可见用filter()
这个高阶函数,关键在于正确实现一个“筛选”函数。
sorted:
排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序.
Pyhon内置的sorted()
函数就可以对list进行排序:
>>> sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36]
此外,sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。比如,如果要倒序排序,我们就可以自定义一个reversed_cmp函数:
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
传入自定义的比较函数reversed_cmp
,就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]
我们再看一个字符串排序的例子:
>>> sorted(['bob', 'about', 'Zoo', 'Credit']) ['Credit', 'Zoo', 'about', 'bob']
默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a'
,结果,大写字母Z
会排在小写字母a
的前面。
现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能定义出忽略大小写的比较算法就可以:
def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1 < u2: return -1 if u1 > u2: return 1 return 0
忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。
这样,我们给sorted
传入上述比较函数,即可实现忽略大小写的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case) ['about', 'bob', 'Credit', 'Zoo']
相关推荐
文章目录sorted函数一、sort方法二、sorted内置函数三、情景引入filter类一、简单使用二、练习map类语法:一、简单使用二、练习reduce函数语法:一、简单使用二、设置初始值 Python中使用函数作为参数的内置函数和类...
在Python编程语言中,有四个内置的高阶函数:`map()`, `reduce()`, `filter()` 和 `sorted()`,它们对于处理数据和简化代码有着重要作用。这些函数都是函数式编程的重要工具,尤其在处理列表和其他可迭代对象时非常...
综上所述,掌握Python的函数式编程和高阶函数,如`map`、`reduce`、`filter`和`sorted`,能够帮助我们编写出更高效、更简洁的代码,提升编程能力。通过理解这些概念并熟练运用,可以有效减少代码的复杂性和维护成本...
map/reduce filter sorted 返回函数 匿名函数 装饰器 偏函数 模块 使用模块 安装第三方模块 单元测试 文档测试 IO编程 文件读写 StringIO和BytesIO 操作文件和目录 序列化 进程和线程 多进程 多线程 ThreadLocal ...
Python对函数式编程的支持,如map、reduce、filter和sorted函数,也被详细讲解,这些是Python强大编程能力的体现。 IO编程是任何应用程序都不可或缺的一部分,Python通过内置的模块如os、sys、文件对象等提供了强大...
今天我们将探讨五个重要的高阶函数:`map()`、`reduce()`、`sorted()`、`filter()`以及`lambda`表达式。 一、`map()`函数 `map()`函数接受一个函数`fn`和一个序列`lsd`作为参数,将`fn`函数依次应用到`lsd`中的每个...
map/reduce 125 filter 130 sorted 134 返回函数 137 匿名函数 141 装饰器 143 偏函数 148 模块 151 使用模块 153 安装第三方模块 157 面向对象编程 159 类和实例 161 访问限制 165 继承和多态 169 ...
进阶特性部分则深入讲解了Python的高级特性,例如切片操作、迭代器和生成器、列表生成式、高阶函数、map/reduce、filter、sorted函数、匿名函数、装饰器、偏函数等。这些特性是Python强大功能的体现,也是其区别于...
Python的基本语法部分包括安装Python环境、编写第一个Python程序、使用文本编辑器、Python代码运行助手、输入和输出、数据类型和变量、字符串和编码、使用list和tuple、条件判断、循环、使用dict和set、函数的定义和...
8. 函数式编程:介绍了高阶函数、map/reduce、filter和sorted等函数式编程技术。 9. 返回函数、匿名函数和装饰器:这些是Python中实现高阶函数操作的几种方式。 10. 模块:展示了如何使用Python标准库中的模块,...
介绍Python用于支持将函数赋值给变量的一个操作符默认是返回的,所以不用再加return关键字,不然会报错需要两个参数,第一个是一个处理函数,第二个是一个序列
Python 2.7的语法和特性包括但不限于:增强的异常处理、内建函数(如`enumerate()`和`sorted()`)、生成器、上下文管理器(使用`with`语句)、函数式编程工具(如`map()`, `filter()`, `reduce()`),以及`PEP 8`...
- 高级特性:包括切片、迭代、列表生成式、生成器、迭代器、函数式编程、高阶函数、map/reduce、filter、sorted等。 - 函数:包括调用函数、定义函数、函数的参数、递归函数、返回函数、匿名函数、装饰器、偏函数等...
本篇学习笔记主要介绍了Python中关于变量指向函数、高阶函数以及特殊高阶函数map()、reduce()、filter()和sorted()的使用方法和原理。 首先,变量在Python中不仅可以指向基本数据类型,还可以指向一个函数名。这...
- 高级特性:探索切片、迭代、列表生成式、生成器、迭代器、函数式编程、map/reduce、filter、sorted等高级编程技术。 - 函数和模块:讲解如何定义和调用函数、理解参数、使用匿名函数、装饰器、偏函数以及模块的...
4. **函数式编程**:使用map()、filter()、reduce()等函数可以写出简洁且高效的代码。掌握这些函数及其组合使用技巧,能提高代码的可读性和性能。 5. **内建函数与C扩展**:Python的内建函数通常比自定义的Python...
函数式编程是Python支持的编程范式之一,教程中提到了map/reduce、filter、sorted、返回函数、匿名函数、装饰器和偏函数等内容。函数式编程强调的是函数的无副作用以及函数的复用性,其中map和reduce是函数式编程中...