前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Python]中filter、map、reduce、lambda的用法

[Python]中filter、map、reduce、lambda的用法

作者头像
祥知道
发布2020-03-10 14:58:57
6010
发布2020-03-10 14:58:57
举报
文章被收录于专栏:祥的专栏祥的专栏

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/45950985


文章目录
  • @[toc]
  • filter、map、reduce的用法
    • filter用法
    • map用法
    • reduce用法
  • 与lambda的联合使用
    • lambda与filter联合使用
    • lambda与map联合使用
    • lambda与reduce联合使用

Python中内置了一些非常方便的函数,可以节约我们的开发时间和提高程序的效率。

filter、map、reduce的用法

filter用法

filter(function, sequence):对sequence中的item依次执行 function(item),将执行结果为Trueitem组成一个ListStringTuple(取决于sequence的类型)返回

代码语言:javascript
复制
# 寻找能被2整除的数
>>> def fun(x): return x%2==0 

>>> filter(fun,range(0,10))
[0, 2, 4, 6, 8]

map用法

map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:

代码语言:javascript
复制
>>> def fun(x): return x**2

>>> map(fun,range(1,10))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> def fun(x): return x+x

>>> map(fun,'abcdefg')
['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg']#得到的还是列表

另外map()也支持多个 sequence,这就要求function也支持相应数量的参数输入。

代码语言:javascript
复制
>>> def add(x,y): return x+y

>>> map(add,range(10),range(10))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

reduce用法

reduce(function, sequence[, initial]):对sequence中的item顺序迭代调用 function,如果有 initial,还可以作为初始值调用。

代码语言:javascript
复制
>>> def add(x,y): return x+y

>>> reduce(add, range(1,4)) #返回 6 = 1+2+3
6
>>> reduce(add, range(1,4), 10) #返回 16 = 1+2+3 (+10)
16

与lambda的联合使用

lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方。

代码语言:javascript
复制
# 定义的平方函数
>>> square = lambda x: x**2
>>> square(3)
9
>>> (lambda x: x**2)(3) #也可以这样调用,单行最小函数
9

所以把filtermapreducelambda 结合起来用,函数就可以简单的写成一行。(装逼技能 Get

lambda与filter联合使用

代码语言:javascript
复制
#寻找能被2整除的数
>>> filter( lambda x:x%2==0, range(0,10) )
[0, 2, 4, 6, 8]

lambda与map联合使用

代码语言:javascript
复制
#分别求列表数值的平方
>>> map( lambda x:x**2, range(0,10) )
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

lambda与reduce联合使用

代码语言:javascript
复制
#1+2+3+···+100=?  高斯小时候做过的数学题
>>> reduce( lambda x,y:x+y, range(1,101) )
5050
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • filter、map、reduce的用法
    • filter用法
      • map用法
        • reduce用法
        • 与lambda的联合使用
          • lambda与filter联合使用
            • lambda与map联合使用
              • lambda与reduce联合使用
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档