翻译、修改自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

最新文章

  1. Linux SHELL 命令入门题目答案(一)
  2. 北大poj- 1067
  3. Java list的用法排序及遍历
  4. .net core 1.0 Web MVC 自定义认证过程
  5. 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
  6. Java与MySql数据类型对照表
  7. 在mac中怎么显示隐藏文件夹
  8. 汇编cmp比较指令详解
  9. 应用层open(read、write、close)怎样调用驱动open(read、write、close)函数的?
  10. JS生成当前月份包括最近12个月内的月份
  11. 关于JS事件冒泡与JS事件代理(事件委托)
  12. Linux命令:linux软链接的创建、删除和更新---ln
  13. AngularJS 高级程序设计
  14. structc 开源框架介绍
  15. Start-Sleep 帮助信息
  16. 【BZOJ2716】天使玩偶【kd树】
  17. QTcpSocket-Qt使用Tcp通讯实现服务端和客户端
  18. vue2.0做移动端开发用到的相关插件和经验总结1.0
  19. 网络安全之iptables防火墙
  20. Tengine/Nginx 安装

热门文章

  1. CSRF学习笔记之CSRF的攻击与防御以及审计【00x2 】
  2. Linux svn仓库备份到Windows机器上
  3. java:eclipse-tomcat 配置
  4. 档案 & 权限管理
  5. Linux利器:WinSCP,Putty,pscp和psftp
  6. zend studio 10.6.2 设置默认编码为UTF-8
  7. 【理财】阅读:Millionaire Teacher
  8. Python中3元运算符的实现
  9. 【python】map list for 运行时长测试
  10. 总结 一下UML 类图的关系