---map(fun,iterable)

  首先来看一看map()函数,map函数接受两个参数,第一个参数是函数的名称,第二个参数一个可迭代对象。即map(fun,iterable)

  map函数就是将具体数值根据算法进行计算,并将结果保存为一个迭代器。我们知道,迭代器很'懒',通过调用next函数一次只输出一个值。

  来看一个最简单的map()例子。

#给定一组数1,2,3要求求出每个数加一后的值
>>> def add(x):
...     x+=1
...     return x
...     
>>> l=[1,2,3]
>>> r=map(add,l)
>>> print(r)
<map object at 0x03E4F510>
>>> for i in r:
...     print(i)
...     
2
3
4

使用map对一行进行多个赋值

x,y,z=map(int,input('please input your number:').split())
print(x,y,z)

如何利用map()将名字首字母大写?

def daxie(name):
return name[0].upper+name[1:] def daxie2(name):
return '%s%s'%(name[0].upper(),name[1:]) a=['linghuchong','dongfangbubai']
r=map(daxie2,a)
for i in r:
print(i)

--reduce

  reduce同map函数一样,也是接受两个参数,但不同的是,reduce函数将当前数值的计算结果与下一个数值的计算结果进行累积计算。

    reduce()函数第一次运行时会将可迭代对象的第一项作为第一个参数,第二项作为第二个参数传入函数。

    第二次运行则会将函数第一次运行所返回的结果作为第一个参数,可迭代对象的第三项作为第二个参数传入函数……

  即:reduce(f,[1,2,3,4])=f(f(f(1,2),3),4)

  来看一个简单的reduce函数的例子

#
from functools import reduce
def leijia(x,y): #注意,我们所定义的函数必须要接受两个参数,否则会报错
return x+y
print(reduce(leijia,[1,2,3,4,5])) #结果
15 #当然也可多加默认参数
from functools import reduce
def leijia(x,y,z=2):
return x+y+z
print(reduce(leijia,[1,2,3,4,5])) #结果:
23

 --filter

  同上两个函数一样,接受两个参数,第一个参数为函数名,第二个参数为序列。但filter根据序列中各个元素作用与函数时,函数返回结果(True/False)来决定该元素是否保留。

  来看一个筛选偶数的简单例子:

def select(num):
if num%2==0:
return True
else:
return False r=filter(select,[1,2,3,4,5,6])
for i in r:
print(i)

 --sorted(list,key=None,reverse=False)

  sorted顾名思义,就是排序的意思。

>>> sorted([22,33,55,11,44])
[11, 22, 33, 44, 55]

  sorted还可以接受一个key函数,实现自定义排序。

    1  key指定的函数将作用于list的 每一个元素 上。也就是list的 每个元素 作为参数传入key函数

    2  sorted()函数按照keys函数返回的结果进行排序,并 按照对应关系 返回list相应的元素

>>> sorted([22,33,-11,44,-55],key=abs)
[-11, 22, 33, 44, -55]

来一个复杂一点的实例:

  

#  根据名称排序
>>> d=[('linghuchong','xixingdafa'),('dongfangbubai','kuihuabaodian'),('zhangwuji','qiankundanuoyi')]
>>> def by_name(a):
... return a[0]
...
>>> r=sorted(d,key=by_name)
>>> print(r)
[('dongfangbubai', 'kuihuabaodian'), ('linghuchong', 'xixingdafa'), ('zhangwuji', 'qiankundanuoyi')] # 根据功法排序
>>> def by_gongfa(a):
... return a[1]
...
>>> r2=sorted(d,key=by_gongfa)
>>> print(r2)
[('dongfangbubai', 'kuihuabaodian'), ('zhangwuji', 'qiankundanuoyi'), ('linghuchong', 'xixingdafa')]

python基础之map/reduce/filter/sorted的更多相关文章

  1. Python map/reduce/filter/sorted函数以及匿名函数

    1. map() 函数的功能: map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)] def f(x): return x*x a = map(f, [1, 2, 3, ...

  2. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  3. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  4. (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)

    原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...

  5. 函数式编程 高阶函数 map&reduce filter sorted

    函数式编程 纯函数:没有变量的函数 对于纯函数而言:只要输入确定,那么输出就是确定的.纯函数是没有副作用的. 函数式编程:允许把函数本身作为参数传入另一个函数,还允许返回一个函数 高阶函数:一个函数的 ...

  6. python函数式编程学习之map,reduce,filter,sorted

    map(f, list)函数用于将函数f运用到list里的每个元素中 写个例子 def pow(x): return x*x map(pow, [2,3,4]) reduce(f, list)函数用于 ...

  7. python中lambda,map,reduce,filter,zip函数

    函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...

  8. python 中的map(), reduce(), filter

    据说是函数式编程的一个函数(然后也有人tucao py不太适合干这个),在我看来算是pythonic的一种写法. 简化了我们的操作,比方我们想将list中的数字都加1,最基本的可能是编写一个函数: I ...

  9. Python基础(map/reduce)

    from functools import reduce#reduce函数在python3的内建函数移除了,放入了functools模块 #map() list1 = [1,2,3,4,5,6,7,8 ...

随机推荐

  1. No.111_第四次团队会议

    后端的偏执 啊,这次又轮到我写团队博客了. 此时又是深夜,窗外漫天繁星.舍友的呼噜声惊吓了月亮,它害羞地跑回了云里去. 我关上灯拔掉机械,悄悄拿着电脑上了床,写这次的团队博客.曾经觉得自己绝对不会晚睡 ...

  2. 三公网络监督平台APP上线,源代码出售。

  3. 封装GetQueryString()方法来获取URL的value值(转载)

    首先测试URL:http://192.168.1.82:8020/juzhong/daojishi.html?name=xiangruding&sex=nuuu&age=90 代码如下 ...

  4. Scrum 项目4.0&&5.0

    MY—HR 成员: 角色分配 学号 博客园 4.0团队贡献分 5.0团队贡献分 丘惠敏 PM项目经理 201406114203 http://www.cnblogs.com/qiuhuimin/ 19 ...

  5. 关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题

    元数据是:NET 程序集中的标记信息. 是在代码中选择了转到定义时候给定位的吧.因为没有找到源代码,VS通过反射读取元数据中的信息生成了那个. 解决方法: 1. 要把项目先添加到解决方案中. 2. 再 ...

  6. gitlab邮箱服务配置

    配置邮箱服务的用途 有合并请求时,邮件通知 账号注册时,邮件验证 修改密码时,通过邮件修改 配置步骤: .开启QQ邮箱的smtp服务(不建议使用163邮箱,发几次之后,就不能发送) 设置-->账 ...

  7. [转帖] sqlserver CAL 授权模式下 只能够有20个core的使用问题

    http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进 ...

  8. startActivityForResult()的用法(超好用啊)

    最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修 ...

  9. mysql索引的优化

    MySQL索引的优化 上面都在说使用索引的好处,但过多的使用索引将会造成滥用.因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT.UPDATE和DEL ...

  10. lucene介绍

    1.https://blog.csdn.net/shuaicihai/article/details/65111523 2.https://www.cnblogs.com/rodge-run/p/65 ...