2019独角兽企业重金招聘Python工程师标准>>>

文章首发于我的技术博客:你可以在上面看到更多的Python教程和python爬虫

通过示例介绍Python中的lambda,map,filter 函数的使用方法。

lambda

lambda 操作符(或 lambda函数)通常用来创建小巧的,一次性的匿名函数对象。它的基本语法如下:


lambda arguments : expression

lambda操作符可以有任意数量的参数,但是它只能有一个表达式,且不能包含任何语句,返回一个可以赋值给任何变量的函数对象。

下面通过一个例子来理解一下。首先看看一个Python函数:


def add(x, y):return x+y# call the function
add(1, 2)  # Output: 3

上述函数名为add, 它需要两个参数x和y,并返回它们的和。
接下来,我们把上面的函数变成一个lambda函数:


add = lambda x, y : x + yprint(add(1,2))  # Output: 3

lambda x, y : x + y中,x和y是函数的参数,x+y是表达式,它被执行并返回结果。
lambda x, y : x + y返回的是一个函数对象,它可以被赋值给任何变量。在本例中函数对象被赋值给了add变量。如果我们查看add的type,可以看到它是一个function


type(add)  # Output: function

绝大多数lambda函数作为一个参数传给一个需要函数对象为参数的函数,比如map,reduce,filter等函数。

map

map的基本语法如下:


map(function_object, iterable1, iterable2, ...)

map函数需要一个函数对象和任意数量的iterables,如list,dictionary等。它为序列中的每个元素执行function_object,并返回由函数对象修改的元素组成的列表。
示例如下:


def add2(x):return x+2map(add2, [1,2,3,4])  # Output: [3,4,5,6]

在上面的例子中,map对list中的每个元素1,2,3,4执行add2函数并返回[3,4,5,6]
接着看看如何用map和lambda重写上面的代码:


map(lambda x: x+2, [1,2,3,4])  #Output: [3,4,5,6]

仅仅一行即可搞定!

使用map和lambda迭代dictionary:


dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]map(lambda x : x['name'], dict_a) # Output: ['python', 'java']map(lambda x : x['points']*10,  dict_a) # Output: [100, 80]map(lambda x : x['name'] == "python", dict_a) # Output: [True, False]

以上代码中,dict_a中的每个dict作为参数传递给lambda函数。lambda函数表达式作用于每个dict的结果作为输出。

map函数作用于多个iterables


list_a = [1, 2, 3]
list_b = [10, 20, 30]map(lambda x, y: x + y, list_a, list_b) # Output: [11, 22, 33]

这里,list_a和list_b的第i个元素作为参数传递给lambda函数。

在Python3中,map函数返回一个惰性计算(lazily evaluated)的迭代器(iterator)或map对象。就像zip函数是惰性计算那样。
我们不能通过index访问map对象的元素,也不能使用len()得到它的长度。
但我们可以强制转换map对象为list:


map_output = map(lambda x: x*2, [1, 2, 3, 4])
print(map_output) # Output: map object:list_map_output = list(map_output)print(list_map_output) # Output: [2, 4, 6, 8]
 

filter的基本语法如下:


filter(function_object, iterable)

filter函数需要两个参数,function_object返回一个布尔值(boolean),对iterable的每一个元素调用function_object,filter只返回满足function_object为True的元素。

和map函数一样,filter函数也返回一个list,但与map函数不同的是,filter函数只能有一个iterable作为输入。
示例
返回偶数:


a = [1, 2, 3, 4, 5, 6]
filter(lambda x : x % 2 == 0, a) # Output: [2, 4, 6]

过滤dicts的list:


dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]filter(lambda x : x['name'] == 'python', dict_a)
# Output: [{'name': 'python', 'points': 10}]

和map一样,filter函数在Python3中返回一个惰性计算的filter对象或迭代器。我们不能通过index访问filter对象的元素,也不能使用len()得到它的长度。


list_a = [1, 2, 3, 4, 5]filter_obj = filter(lambda x: x % 2 == 0, list_a) # filter object even_num = list(filter_obj) # Converts the filer obj to a listprint(even_num) # Output: [2, 4]

转载于:https://my.oschina.net/JUANererer/blog/3021773

关乎Python lambda你也看得懂相关推荐

  1. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  2. python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...

    原标题:程序员才能看得懂的段子,内含表情包,吃饭的时候别点! 很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农.其实这种看法是非常片面的.真正优秀的程序员,不仅精通程序的编写,还是某些领域的专 ...

  3. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木

    学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...

  4. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

    学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...

  5. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

    学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...

  6. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧

    学习目标 完成显示魔法的使用--输出print 完成传入魔法的使用--输入input 使魔法生效--运行python文件 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 &g ...

  7. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用

    学习目标 了解什么是开发环境 了解python语言的环境安装 了解python语言编程的编辑器工具 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然你选 ...

  8. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂

    一.前言 几个月前编写了一份python语言入门的博文,近期重新审阅了一遍发现编写的质量太过随意,可能对于一部分人并不是非常友好,故此重新编写Python语言的零基础教程. 本篇教程将会尽量把一些专业 ...

  9. python如何运行_家长看的懂的Python编程---电脑要如何运行Python?

    本文是<家长看的懂的Python编程>第2节,如果你还没有看过前面的章节,请移步至如下链接! 家长看的懂的Python编程---预备知识 这一章我们要正式踏上Python的学习之旅,今天我 ...

最新文章

  1. 查找字符串里面有没有相同的字符- -
  2. SpringCloud Eureka Client和Server侧配置及Eureka高可用配置
  3. MySQL显示ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)解决方法
  4. openstack e版创建instance整个流程
  5. 趣谈网络协议笔记-二(第五讲)
  6. ionic2 安装与cordova打包
  7. 对比Ruby和Python的垃圾回收(2):代式垃圾回收机制
  8. VS2010复制项目
  9. 第二章 软件项目立项与规划
  10. C语言中断函数c_int00的作用,关于DSP程序中的_c_int00含义
  11. HTML基础标签和基本CSS行内样式
  12. ESP8285烧写问题备忘
  13. 如何清空c盘只剩系统_怎么清空c盘只保留系统文件 你值得一看的技巧
  14. 微信小程序input输入框屏蔽非法字符
  15. Python爬取奇书网(用Python下载小说到本地)
  16. 《学习之道》第二章专注思维和发散思维
  17. Ubuntu 终端窗口操作快捷键
  18. 未睹棺椁先哭君——谷歌墓志铭
  19. 华为p10和p10plus区别_华为P10与P10 Plus的区别,不仅仅只是大了一圈
  20. 【C语言程序设计】实验 10

热门文章

  1. Nginx负载均衡和反向代理设置
  2. Android 仿QQ消息界面
  3. Ueditor使用以及遇到的问题
  4. Tomcat源码分析——server.xml文件的加载
  5. Mac 10.10下安装MySQL5.6.21提示安装失败
  6. 程序员最艰巨的十大任务
  7. 数据库中的超码、候选码、主码
  8. 手机开发与测试的Firefox插件:User Agent Switcher
  9. mongoDB配制及学习
  10. js中数组的一些操作