文档章节

零基础学python-18.7 为什么要使用lambda表达式

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 775
阅读 3
收藏 0
点赞 0
评论 0

这一章节我们来讨论一下为什么要使用lambda表达式

主要的目的就是提供一个更加简洁的代码结构,但是对于初学者,它可能反而增加阅读的难度

lambda通常应用在行为调整表,也就是行为的列表或者字典,能够按照需求执行不同的代码。

>>> aList=[lambda x:x**2,lambda x:x**3,lambda x:x**4]#list里面是三种幂算法
>>> for func in aList:
	print(func(2))

	
4
8
16
>>>

我们看见上面的代码比较简介,而且很可能列表里面的方法只是在这个地方使用,而不在其他地方使用,这样就不用像下面的代码一样定义这么多函数

我们下面给出等价代码:

>>> def test1(x):return x**2

>>> def test2(x):return x**3

>>> def test3(x):return x**4

>>> aList=[test1,test2,test3]
>>> for func in aList:
	print(func(2))

	
4
8
16
>>>

两组代码相对比,第一组的结构明显简单很多,而且由于使用lambda表达式使得定义的方法比较少,相对容易管理,因为这三种幂算法只是在这里使用,而不会在其他地方使用

但是,笔者认为,对于初学者,或者不是函数式编程背景的程序员,尽量使用第二种方法,因为维护起来更加简单明了,现在这个时代代码的可阅读性比代码性能、结构来的更加重要,毕竟不是每一个引用的秒请求次数都是那么高的,当然,这只是笔者一点个人意见


上面我们列举了在列表里面的使用,我们下面说说在字典里面的使用

>>> aDict={'a':lambda : 2**2,'b':lambda : 3**2,'c':lambda : 4**2}#根据条件输出

>>> for key in aDict:
	print(key+str(aDict[key]()))

	
b9
c16
a4
>>>

如果是作为一种行为选择器,字典可能更加适合,因为它可以根据key来选择不同的表达式,而在列表里面只能选择下标,key比下标来的更加明确

例如:

>>> aDict={'before':lambda : 'before','doing':lambda : 'doing','after':lambda : 'after'}#根据条件输出
>>> for key in aDict:
	print(key+':'+str(aDict[key]()))

	
before:before
after:after
doing:doing

>>>

上面的代码展现了一件事情在不同的生命周期需要做的东西,例如有开始的时候、正在进行的时候、做完的时候

上面代码的等价代码:

>>> def before():return 'before'

>>> def doing():return 'doing'

>>> def after():return 'after'

>>> aDict={'before':before,'doing':doing,'after':after}
>>> 
>>> for key in aDict:
	print(key+':'+str(aDict[key]()))

	
before:before
after:after
doing:doing
>>>

结合lambda与字典,更加适合做分支选择工具


总结:这一章节主要说明了为什么需要用lambda,以及简单介绍lambda结合列表与字典怎样作为行为选择器来使用


这一章节就说到这里,谢谢大家

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

点击跳转零基础学python-目录

 




版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48601035

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
新手学python,如何才能更快升职加薪,迎娶白富美,走上人生巅峰

最近在问答里发现好多咨询怎么学习python,或者学习难不难的问题,这里给大家提几点建议: 了解自己的目标 我开始学编程的时候,连基础的知识都不知道,小白的很!记得我开始看教材,就是输入...

python教程
05/31
0
0
python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy
06/24
0
0
解析Kotlin 函数用法与函数式编程

导读 本篇文章主要介绍Kotlin函数的用法,以及自己对函数式编程的一些理解。并且会和Python,C++做一些比较。 自从Google爸爸宣布Kotlin为自己的干儿子之后,Kotlin被各大社区炒的火热。 如果...

问题终结者
2017/10/19
0
0
Python中lambda的用法及其与def的区别解析

一、python中的lambda 1 作用: 通常是用来在python中创建匿名函数的 2 格式: lambda 参数[,参数] : 表达式 3 注意: (1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数...

雪之丞
2014/10/21
0
0
Python二次元世界-Lisp的帝国斜阳 lambda与closure

Python二次元世界-函数式编程 Function , lambda与closure 本章讲述Python语言自Lisp语言演变而来的一些高级函数编程技巧 如闭包(closure) 匿名函数(lambda) 生成器(yield) 嵌套作用域(ne...

圣何塞白话人
2012/05/13
0
0
5个python爬虫教材,让小白也有爬虫可写,含视频教程!

认识爬虫   网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据。 python写爬虫的优势   其实以上功能很多语言和工具都能做,但是用...

柯西带你学编程
06/12
0
0
不是你学不会Python,只说你的学习方法不对!那如何学习Python呢

有没有那么一个瞬间,你想放弃学习Python? 做任何事情一定有在短期内简单可行的方法。学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。 很多人觉得自己一定能够自学好...

Python燕大侠
06/06
0
0
ParisGabriel:Python全栈工程师(0基础到精通)教程 第十五课(函数嵌套、变量作用域)

ParisGabriel 感谢 大家的支持                      每天坚持 一天一篇 点个订阅吧 灰常感谢 当个死粉也阔以                       Python人工智...

ParisGabriel
07/13
0
0
Python函数式编程中map()、reduce()和filter()函数的用法

Python中、和三个函数均是应用于序列的内置函数,分别对序列进行遍历、递归计算以及过滤操作。这三个内置函数在实际使用过程中常常和联合使用,我们首先介绍下lambda函数。1、lambda函数 la...

损失函数
05/24
0
0
如何用 Python 可视化《三国》人物与兵器出现频率?(视频教程)

咱们以《三国演义》人名和兵器谱为例,尝试读取不同结构的文本文件,并且对其中的信息进行统计分析和可视化。 入门 如何帮助学生高效入门 Python ,一直是困扰我的问题。 总结经验后,我写下...

王树义
06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
26分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
41分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
145
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部