博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础之map/reduce/filter/sorted
阅读量:4591 次
发布时间:2019-06-09

本文共 2254 字,大约阅读时间需要 7 分钟。

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

 --filter

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

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

def select(num):    if num%2==0:        return True    else:        return Falser=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')]

 

转载于:https://www.cnblogs.com/MnCu8261/p/5527570.html

你可能感兴趣的文章
C# 使用Emit实现动态AOP框架 进阶篇之异常处理
查看>>
开源代码网站(转)
查看>>
C#设计模式(1)——单例模式
查看>>
c语言warning总结
查看>>
Python科学计算工具包
查看>>
6-12 SVM小结
查看>>
LeetCode Two City Scheduling
查看>>
14_新闻客户端_数据准备完成
查看>>
fseek()
查看>>
项目心得--合格的技术负责人
查看>>
STM32F407Discovery开发板使用环境搭建
查看>>
puppeteer 中国区的使用
查看>>
深度学习之 seq2seq 进行 英文到法文的翻译
查看>>
关于我系列
查看>>
(笔记):初始化列表之初始化顺序
查看>>
如何将一整个文件夹提交到github远程仓库
查看>>
周总结11
查看>>
bootstrap中栅格系统的原理
查看>>
webpack基础入门
查看>>
Android为TV端助力(转载)
查看>>