关于python入门

很多朋友说,python入门有推荐的书吗?其实遇到这种问题会比较难回答,因为如果一心想学python,现在网络那么发达怎么都能找到资料。当然你要真让我推荐一本书,我还是想说《python学习手册第四版》,这本书乍一看突出一个厚字,但内容讲的是真的很细致!如果你不知道python学哪本书,还是推荐你看看它。大家可以从我公众号底部的领取福利中,找到这本书。即便你已不是python小白,回过头看看这本书也能有很多收获。这几天在处理项目python自动化升级的工作,其中涉及到大量数据的格式化、类型变更与过滤。所以,今天跟大家讲讲关于python中几个精致的函数

匿名函数lambda

除了def语句,python还提供了一种生成函数对象的表达式形式。由于它与LISP语言中的一个工具类似,所以称为lambda。
就像def一样,这个表达式创建了一个之后能够调用的函数,但是它返回一个函数而不是将这个函数赋值给一个变量。这些就是lambda叫做匿名函数的原因。实际上,他常常以一种行内进行函数定义的方式使用,或者用作推迟执行一些代码。
lambda的一般形式是关键字lambda之后跟着一个或多个参数(与一个def头部内用括号括起来的参数列表类似),紧跟着是一个冒号,之后是表达式

lambda arg1,arg2,argn:expression using arguments

由lambda表达式所返回的函数对象与由def创建并复制后的函数对象工作起来是完全一致的,但lambda有一些不同之处,让其扮演特定的角色时更有用:

lambda是一个表达式,而不是一个语句

因为这一点,lambda可以出现在python语法不允许def出现的地方:
eg:一个的表敞亮中或者函数调用的参数中.
此外,作为一个表达式,lambda返回一个值(一个新的函数),可以选择性的赋值给一个变量
相反,def语句总是得在头部将一个新的函数赋值给一个变量,而不是将这个函数作为结果返回。

lambda的主题是单个表达式,而不是一个代码块

这个lambda的主题简单的就好像凡在def主体return语句中的代码一样。
简单的将结果写成一个顺畅的表达式,而不是明确的返回。
但由于它仅限于表达式,故lambda通常要比def功能少…你仅能够在lambda主体中封装有限的逻辑进去,因为他是一个为编写简单函数而设计的。
除了上述这些差别,def和lambda都能过做同样种类的工作

def与lambda的相同用法

x = lambda x, y, z: x + y + z
x(2, 3, 4)
>>> 9y = (lambda a='hello', b='world': a + b)
y(b='清风')
>>> 'hello清风'

为什么使用lambda

看过上面的两个小例子,很多人会说这个和def没什么差别,我们又为什么要使用lambda呢?通常来说,lambda起到一种函数的速写作用,允许在使用的代码内嵌一个函数的定义,他完全是可选的(是可以使用def代替他们),但是在你仅需要切入一段可执行代码的情况下,它会带来一个更简洁的书写效果。

lambda通常用来编写跳转表,也就是行为的列表或者字典,能够按照需求执行操作,比如:

l = [lambda x: x ** 2, lambda x: x ** 3, lambda x: x ** 4]for f in l:print(f(2))
>>> 4
>>> 8
>>> 16
print(l[0](3))
>>> 9

当需要吧小段的可执行代码编写进def语句从语法上不能实现的地方是,lambda表达式作为def的一种速写来说,是最为有用的,如果上面的代码用def编写,则变为:

def f1(x):return x ** 2def f2(x):return x ** 3def f3(x):return x ** 4l = [f1, f2, f3]for f in l:print(f(2))
print(l[0](3))

实际上,我们可以用python中的字典或者其他的数据结构来构建更多种类的行为表,从而做同样的事情。

lambda中实现if-else

Python中具备的单行表达式: if a:b else c语法在lambda中同样适用:

lower = lambda x,y:x if x<y else y
lower(4,5)
>>> 4

看了半天,大家可能也并未觉得lambda在python中到底比def优越与便利在哪里,那么说到lambda,就必须要提及三个函数map、filter、reduce

map 函数

程序对列表或者其他序列常常要做的一件事就是对每个元素进行一个操作,并把其结果集合起来。
python提供了一个工具map,它会对一个序列对象中的每一个元素英语被传输的函数,并返回一个包含了所有函数调用结果的列表。
举个栗子,我们有一个列表,需要将列表的每一个字段+10,我们该如何操作?

list_show = [1, 2, 3, 4]
# 方式1
new_list_show = []
for i in list_show:new_list_show.append(i + 10)print(new_list_show)# 方式2
def adds(x):return x + 10print(list(map(adds, list_show)))# 更优雅的方式3:
print(list(map(lambda x: x + 10, list_show)))

看看上面三个实现方式,你觉得那种更加Pythonic?
eg:需要注意一点,map在python3中是一个可迭代对象,引入需要使用列表调用来破事他生成所有的结果用于显示,python2不必如此。
当然map的阐述函数,不仅仅支持自己编写的,同样也支持python自带的多种函数,比如:

list_show = [1, -2, 3, -4, 5, -6]
print(list(map(abs, list_show)))
>>> [1, 2, 3, 4, 5, 6]

filter函数

filter通过字面意思,大家就知道它的用处了,用于数据的过滤操作,它也是lambda的一个好基友,举个栗子。
我们需要过滤0-9中,能被2整除的数字组成一个列表,我们该如何操作?只需要一行代码:

print(list(filter(lambda x: x % 2 == 0, range(10))))
>>> [0, 2, 4, 6, 8]

没错,filter就是这么的简单实用….

reduce的妙用

reduce在python2中是一个简单的函数,但在python3中它责备收录与functools中。
它接收一个迭代器来处理并返回一个单个的结果。

list_show = [1, 2, 3, 4]
print(reduce(lambda x, y: x + y, list_show))
>>> 10
print(reduce(lambda x, y: x * y, list_show))
>>> 24

lambda的实用与它的好基友就介绍到这里,希望对大家有所帮助。

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们

作者:清风Python

Python中lambda的使用,与它的三个好基友介绍!相关推荐

  1. php有lambda表达式吗,Python中lambda表达式的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中lambda表达式的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一:匿名函数的定义 lambda parameter ...

  2. python中lambda的使用

    python中lambda的使用 lambda 表达式可以用来声明匿名函数.lambda 函数是一种简单的.在同一行中定义函数的方法.lambda 函数实际生成了一个函数对象.lambda 表达式只允 ...

  3. python中lambda()的用法_python中lambda()的用法

    在C++11和C#中都有匿名函数的存在.下面看看在python中匿名函数的使用. 1.lambda只是一个表达式,函数体比def简单很多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能 ...

  4. Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)

    文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...

  5. lambda函数if_Python中lambda的使用,与它的三个好基友介绍!

    匿名函数lambda 除了def语句,python还提供了一种生成函数对象的表达式形式.由于它与LISP语言中的一个工具类似,所以称为lambda. 就像def一样,这个表达式创建了一个之后能够调用的 ...

  6. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  7. python中lambda使用

    举个例子如下: 1 func=lambda x:x+1 2 print(func(1)) 3 #2 4 print(func(2)) 5 #3 6 7 #以上lambda等同于以下函数 8 def f ...

  8. 关于python中lambda函数的描述_关于Python中的lambda函数

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

  9. Python中lambda表达式的优缺点及使用场景

    lambda表达式是什么? lambda 表达式是 Python 中创建匿名函数的一个特殊语法. 称 lambda 语法本身为 lambda 表达式,而它返回的函数我称之为 lambda 函数,或者称 ...

  10. day17.Python中lambda表达式应用

    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式 #普通函数 1 def func(a): 2 return a+1 3 print 'test1_func0:',func(1000) ...

最新文章

  1. ArcGIS提高地图浏览效率
  2. 支架预压弹性变形值计算_桥梁支架的预压方法与流程
  3. C++ public、protected、private区别
  4. H5新增API_geoLocation
  5. Java开发中遇到具有挑战的事_Java并发编程的挑战:遇到的问题及如何解决
  6. oracle 11.2.0.3.4 psu 14275605 下载,Oracle RAC 11.2.0.3.2 升级 11.2.0.3.4
  7. win10下 mysql5.7.19 winx64解压缩版安装配置教程
  8. Linux 命令(19)—— tar 命令
  9. 【备忘】mysql常用操作汇总
  10. RAID0、RAID1、RAID0+1、RAID5原理介绍
  11. MySQL_DBA整理
  12. dubbo学习 二 dubbo源码大致查阅
  13. 好的软件测试的简历是什么样的?
  14. 中文姓名笔画计算(VBS脚本版)
  15. 用xpath解析网页
  16. Android ActivityManagerService (AMS)总结
  17. 微信小程序 常见问题(报错)
  18. 哪个平台回收速度快?
  19. 室内地图导航系统基础功能与衍生服务详解
  20. 报错:在实体引用中, 实体名称必须紧跟在 后面。

热门文章

  1. android开启热点softap模式,[RK3288][Android6.0] Wifi开启热点(SoftAP)流程小结
  2. element筛选 ajax,vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询
  3. 简述计算机通信网络的技术指标,计算机网络基础知识之数据通信中的主要技术指标...
  4. java添加锁_java – 如何在这种情况下添加锁?
  5. html字体代码大全_HTML基础笔记(一)
  6. 读取数据库并写入excel表中 发送邮件
  7. org.apache.subversion.javahl.ClientException: Working copy is not up-to-date
  8. Lazyload 延迟加载效果
  9. 窥探Swift之需要注意的基本运算符和高级运算符
  10. 配置Apache Httpd Server 2.2 Virtual Host UrlRewrite