先看map。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
举例说明,比如我们有一个函数a(x)=x*2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下:
>>> def a(x): ... return x * 2 ... >>> map(a, [1,2,3,4,5]) [2, 4, 6, 8, 10]
map传入的第一个参数a,即a函数,当然你也可以不用map函数实现这功能:
>>> list = [] >>> for i in [1, 2, 3, 4, 5]: ... list.append(a(i)) ... >>> print list [2, 4, 6, 8, 10]
从代码量上来讲,map要精简很多,所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的a(x)=x*2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:
>>> map(str,[1,2,3,4,5]) ['1', '2', '3', '4', '5'] >>>
只需要一行代码,就搞定了。让我们再看和来自顾雪峰python教程的习题:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam', ‘LISA', ‘barT'],输出:[‘Adam', ‘Lisa', ‘Bart']。作为我个人来说,我可能会先将不规范的英文名全转换在小写然后再通过capitalize()函数,将首字母转换在写,代码如下:
>>> def caps(name): ... return name.capitalize() ... >>> def lowers(name): ... return name.lower() ... >>> map(caps, map(lowers,['adam', 'LISA', 'barT'])) ['Adam', 'Lisa', 'Bart']
再看reduce的用法。reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25 >>> reduce(add, range(1, 11)) 55 >>> reduce(add, range(1, 11),20) 75
当然求和运算可以直接用Python内建函数sum(),没必要动用reduce。但是如果要把序列[1,2,3,4,5,6,7]变换成整数1234567,reduce就可以派上用场:
>>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1,3,4,5,6,7]) 134567
本文向大家介绍Python中的map()函数和reduce()函数的用法,包括了Python中的map()函数和reduce()函数的用法的使用技巧和注意事项,需要的朋友参考一下 Python内建了map()和reduce()函数。 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大
本文向大家介绍Python中pow()和math.pow()函数用法示例,包括了Python中pow()和math.pow()函数用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中pow()和math.pow()函数用法。分享给大家供大家参考,具体如下: 1. 内置函数pow() 2. math.pow() PS:这里再为大家推荐几款计算工具供大家参考使用: 在线一元函
我目前正在阅读一本Java8Lambdas的书(相当受欢迎),我对其中一个高级问题的答案中的一些语法感到困惑。 问题提出如下问题: 只使用reduce和lambda表达式编写函数'map'的实现。您可以返回而不是。 到目前为止,Java8 lambdas已经非常简单了,我觉得我似乎理解了书中的所有理论,但也许我误解了什么?我想知道我在这里错过了什么?
本文向大家介绍php mysql_list_dbs()函数用法示例,包括了php mysql_list_dbs()函数用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php mysql_list_dbs()函数用法。分享给大家供大家参考,具体如下: mysql_list_dbs()函数 定义:列出MySQL服务器中所有的数据库 PS:这里再为大家提供2款sql在线工具供大家参考使用
本文向大家介绍Python lambda表达式filter、map、reduce函数用法解析,包括了Python lambda表达式filter、map、reduce函数用法解析的使用技巧和注意事项,需要的朋友参考一下 前言 lambda是表达式,用于创建匿名函数,可以和filter、map、reduce配合使用。 本文环境Python3.7。 一、lambda表达式 lambda 只包含一个语句
本文向大家介绍php数组函数array_walk用法示例,包括了php数组函数array_walk用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php数组函数array_walk的用法。分享给大家供大家参考,具体如下: 类内部调用示例: 补充:小编在这里推荐一款本站的php格式化美化的排版工具帮助大家在以后的PHP程序设计中进行代码排版: php代码在线格式化美化工具: http