关乎Python lambda你也看得懂
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你也看得懂相关推荐
- python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...
- python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...
原标题:程序员才能看得懂的段子,内含表情包,吃饭的时候别点! 很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农.其实这种看法是非常片面的.真正优秀的程序员,不仅精通程序的编写,还是某些领域的专 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木
学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧
学习目标 完成显示魔法的使用--输出print 完成传入魔法的使用--输入input 使魔法生效--运行python文件 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 &g ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用
学习目标 了解什么是开发环境 了解python语言的环境安装 了解python语言编程的编辑器工具 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然你选 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
一.前言 几个月前编写了一份python语言入门的博文,近期重新审阅了一遍发现编写的质量太过随意,可能对于一部分人并不是非常友好,故此重新编写Python语言的零基础教程. 本篇教程将会尽量把一些专业 ...
- python如何运行_家长看的懂的Python编程---电脑要如何运行Python?
本文是<家长看的懂的Python编程>第2节,如果你还没有看过前面的章节,请移步至如下链接! 家长看的懂的Python编程---预备知识 这一章我们要正式踏上Python的学习之旅,今天我 ...
最新文章
- 查找字符串里面有没有相同的字符- -
- SpringCloud Eureka Client和Server侧配置及Eureka高可用配置
- MySQL显示ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)解决方法
- openstack e版创建instance整个流程
- 趣谈网络协议笔记-二(第五讲)
- ionic2 安装与cordova打包
- 对比Ruby和Python的垃圾回收(2):代式垃圾回收机制
- VS2010复制项目
- 第二章 软件项目立项与规划
- C语言中断函数c_int00的作用,关于DSP程序中的_c_int00含义
- HTML基础标签和基本CSS行内样式
- ESP8285烧写问题备忘
- 如何清空c盘只剩系统_怎么清空c盘只保留系统文件 你值得一看的技巧
- 微信小程序input输入框屏蔽非法字符
- Python爬取奇书网(用Python下载小说到本地)
- 《学习之道》第二章专注思维和发散思维
- Ubuntu 终端窗口操作快捷键
- 未睹棺椁先哭君——谷歌墓志铭
- 华为p10和p10plus区别_华为P10与P10 Plus的区别,不仅仅只是大了一圈
- 【C语言程序设计】实验 10