翻译、修改自https://medium.com/@happymishra66/lambda-map-and-filter-in-python-4935f248593

1、lambda

lambda运算符或lambda函数用来在Python中创建小的、一次性的匿名函数对象。

基本语法如下:

lambda arguments: expression

lambda运算符可以有多个参数,但只能有一个表达式。它不能包含任何语句,它返回一个可以分配给任何变量的函数对象。

例子1:

add=lambda x,y:x+y

add(2,3)

#输出 5

大多数lambda函数作为参数传递给一个函数,该函数需要一个函数对象作为参数,如map,reduce,filter函数

2、map

基本语法如下:

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

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

例子2:

def multiply(x):

  return x*2

list(map(multiply,[1,2,3,4]))

#返回 [2,4,6,8]

以上例子可以用map和lambda函数结合用一行写好:如下

list(map(lambda x : x*2, [1, 2, 3, 4]))

#输出 [2, 4, 6, 8]

例子3:使用map和lambda在字典上迭代

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

list(map(lambda x : x['name'], dict_a)) # Output: ['python', 'java']

list(map(lambda x : x['points']*10,  dict_a)) # Output: [100, 80]

list(map(lambda x : x['name'] == "python", dict_a)) # Output: [True, False]

例子4:也可以传给map多个序列:

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

以上不加list的话只能返回map对象,我们既不能使用索引访问map对象的元素,也不能使用len()来查找map对象的长度

3、filter

基本语法:
filter(function_object, iterable)

filter函数需要两个参数,function_object和iterable。 function_object返回一个布尔值。 为iterable的每个元素调用function_object,filter只返回function_object返回true的元素。

像map函数一样,filter函数也返回一个元素列表。 与map函数不同,filter函数只能有一个iterable作为输入。
 
例子5:
a = [1, 2, 3, 4, 5, 6]
list(filter(lambda x : x % 2 == 0, a)) # Output: [2, 4, 6]
dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

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

与map类似,Python3中的filter函数返回一个filter对象或lazily evaluated的迭代器。 我们既不能使用索引访问filter对象的元素,也不能使用len()来得到filter对象的长度。

-----------------------

END

Python中的lambda、map和filter的更多相关文章

  1. Python面试题之Python中的lambda map filter reduce zip

    当年龟叔想把上面列出来的这些都干掉.在 “All Things Pythonic: The fate of reduce() in Python 3000”这篇文章中,他给出了自己要移除lambda. ...

  2. 全面了解Python中的特殊语法:filter、map、reduce、lambda。

    这篇文章主要介绍了Python中的特殊语法:filter.map.reduce.lambda介绍,本文分别对这个特殊语法给出了代码实例,需要的朋友可以参考下filter(function, seque ...

  3. python 函数式编程之lambda( ), map( ), reduce( ), filter( )

    lambda( ), map( ), reduce( ), filter( ) 1. lambda( )主要用于“行内函数”: f = lambda x : x + 2 #定义函数f(x)=x+2 g ...

  4. 【转】python中的lambda函数

    http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html lambda函数也叫匿名函数,即,函数没有具 ...

  5. python中的lambda表达

    C++中的lambda表达式与C++11增加标准库,是一个简短的匿名的可调用对象,编译器会将其转化为一个匿名类的对象.lambda表达式的最大特点就是简短灵活.调用方便.它不须要处理非常复杂的逻辑.通 ...

  6. 在Python中使用lambda高效操作列表的教程

    在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...

  7. 关于Python中的lambda

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...

  8. Python中的lambda函数介绍

    Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...

  9. 转:关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...

  10. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

随机推荐

  1. jquery仿jquery mobile的select控件效果

    不说废话.直接上代码 //仿jQuery mobile Select控件 //使用方法box为容器id,_id指控件id,selectvalue为选中值,Value为当前值 function Sele ...

  2. 位集合类BitSet

    位集合类中封装了有关一组二进制数据的操作. 我们先来看一下例8.6 BitSetApp.java. 例8.6 BitSetApp.java //import java.lang.*; import j ...

  3. 蓝桥杯 第三届C/C++预赛真题(4) 奇怪的比赛(递归)

    某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错 ...

  4. 如何在ChemDraw 15.1 Pro中添加模板

    ChemDraw化学绘图工具为了方便用户的使用,特地开发了众多的各种类型模板.用户在绘制一些简单或复杂的化学结构式时,可以直接从ChemDraw模板库里直接调用使用,虽然ChemDraw模板非常的丰富 ...

  5. servlet各版本区别以及dynamic web module 版本之间的区别

    java的web系统有多种类型,比如静态的和动态的,然后动态的java web project要设置dynamic web module,也就是动态网页模型,他必须要喝对应的服务器搭配好了才能跑,今天 ...

  6. django数据库设计

    1 知识点 主要是分析设计数据库的数据表和数据表字段,然后使用Navicat Data Modeler创建模 将sqlite数据库修改成mysql数据库,同步数据 2 模型 2.1 数据表所有的数据列 ...

  7. 如何下载ubuntu桌面,并使用

    下载ubuntu,进行linux系统的操作 1.下载ubuntu 百度搜索ubuntu或直达下载链接http://cn.ubuntu.com/download/ 你可以选择,优麒麟16或者Ubuntu ...

  8. 下载xftp,xshell进行与linux端的远程操作

    在window下下载xftp5和xshell5 xshell主要是对远程的及其进行访问,在远程的情况下进行操作 xftp可以对远程的机器进行文件传输. 我安装这两个是单个的安装的. 进入官网 http ...

  9. libevent(2)

    client.cpp // App02.cpp : 定义控制台应用程序的入口点. // #include <string.h> #include <errno.h> #incl ...

  10. hdu1814(2-SAT)

    2-SAT 求出可能的解,但是这个解要是字典序最小的,所以只能采用2-SAT基本思想来解. 从小到大开始,对一个可能的点染色,染为1,然后dfs其所有能到达的点,如果其中出现一个已经标号为-1的话,那 ...