pythonlambda内判定_python 中的三元表达式及lambda

一、三元表达式

举一个简单的列子,很多地方都有这样的规定,比如用水或者用电,假设用水价格为3R/立方米,当你每个月用超过7立方米后,超出的水按照3.3R/立方米计价。然后写一个程序计算一个家庭每月的水费。

>>> def cost(x):

... if x < 7 :

... pay = x*3

... elif x > 7:

... pay = 21 + (x-7)*3.3

... return pay

这个程序段非常简单,逻辑就不用说了,条件不同计价方式就不一样,但是当我们用三元表达式去写同样功能的这段函数是这样的 pay = x*3 if x < 7 else (21+(x-7)*3.3)

再来一个简单的例子,两个数,我们返回其中较大的那个数。

>>> def max_(a, b):

... if a > b:

... max = a

... else:

... max = b

... return max

当用三元表达式来来写就可以是:max = a if a > b else b 看起来就简洁很多了,这才是Python吗!

二、lambda

>>> def add(x, y)

... sum = x+y

... return sum

用lambda表达式来写就是:add = lambda x, y:x+y 然后直接调用add(1, 2)就可以得到结果

如果把三元式中的cost函数列子用lambda表达式来写就是:再增加一个抄表服务费,参数s

>>> cost = lambda x, s: (x*3 if x < 7 else (21+(x-7)*3.3)) + s

>>> cost(6, 4)

22

可以看到lambda的使用让我们大量的简化了代码,看起来更美观简洁,当然是牺牲了一些可读性,让不熟悉Python的人看得不是很明白

下面介绍一个列子来了解为什么要用lambda

processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)

在Visual Basic,你很有可能要创建一个函数,接受一个字符串参数和一个 collapse 参数,并使用 if 语句确定是否压缩空白,然后再返回相应的值。这种方式比较低效,因为函数可能需要处理每一种可能的情况。每次你调用它,给出你结果前,都要判断是否要压缩空白。在 Python 中,你可以将决策逻辑拿到函数外面,而定义一个裁减过的 lambda 函数提供确切的 (唯一的) 你想要的。这种方式更为高效、更为优雅,而且很少引起那讨厌的bug。`

lambda 定义了一个匿名函数

lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

如果可以使用for...in...if来完成的,坚决不用lambda。

如果使用lambda,lambda内不要包含循环,尽量定义函数来完成,使代码获得可重用性和更好的可读性。

总结:lambda 是为了减少单行函数的定义而存在的。

python中类似三元表达式的写法

python中没有其它语言中的三元表达式,如: a = x > y ? m : n; python中的类似写法为: a = 1 b = 2 h = "" h = " ...

python中的三元表达式(三目运算符)

python中没有其他语言中的三元表达式,不过有类似的实现方法 其他语言中,例如java的三元表达式是这样 int a = 1; String b = ""; b = a > ...

【python】python 中的三元表达式(三目运算符)

python中的三目运算符不像其他语言其他的一般都是 判定条件?为真时的结果:为假时的结果 如 result=5>3?1:0 这个输出1,但没有什么意义,仅仅是一个例子.而在python中的格式 ...

python中的三元表达式

if B = True: return A else: return C 用三元表达式可以写成: return A if B else C

python第十二天&comma; 三元表达式&comma; 函数对象,名称空间与作用域,函数的嵌套定义

复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可 ...

Python中的三元运算符

Python中的三元运算符 对于如下需求: if var1>1 : goal = "执行表达式1" else: goal = "执行表达式2" 1.在其他 ...

Python 中的三元运算(软件测试中运用)

前言 在java中,有类似于 (condition) ? a :b 这样的语法,表示如果condition 为真,返回a,反之返回b.我们称之为三元运算. 那Python中,有没有这样的语法呢,非常遗 ...

HTML中的三元表达式&comma;灵活的使用or逻辑判断

08.27自我总结 HTML中的三元表达式 判断内容 ? 满足返回的值 : 不满足返回的值 灵活使用or逻辑判断 比如我们某个变量为空的时候返回他另外个值 var a = msg || '没有消息'

Python中特殊函数和表达式lambda&comma;filter&comma;map&comma;reduce

1.lambda:使用lambda表达式可以定义一个匿名函数 lambda表达式是一种简洁格式的函数.该表达式不是正常的函数结构,而是属于表达式的类型 (1)基本格式: lambda 参数,参数... ...

随机推荐

Mac 使用Sublime Text 3搭建java环境

运行效果 运行的时候会在桌面上生成一个 .class文件,可以通过配置文件将生成的.class文件删除. 参考: java环境配置:http://developer.51cto.com/art/201 ...

SASS的一些使用体会(安装-配置-开启firefox的调试)

对CSS预处理这个东西的看法,基本就是2种 第一种:不就是css吗,我会写就好了搞得那么复杂干嘛 第二种:感觉这个东西非常有必要,它规范了代码,使开发变得更轻松 好吧以前我是第一种,并且觉得又要配置环 ...

【CodeForces 567F】Mausoleum

寒假最后一题补完啦 ^∀^ 题意 1到n每个数字有两个,排成先不降后不升的序列,比如112332,并且满足k个形如 3 <= 6 代表第三个数字要≤第六个数字这样的约束要求,求有多少种排法. 分 ...

Sicily-1134

一.      题意 按照孩子们需要的积木块数排序(从小到大),先处理需要积木块数少的孩子. 二.      代码 // // main.cpp // sicily-1134 // // Create ...

详解Python变量在内存中的存储

这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最重要的,也是最容易出错的.本文结合数据与内存形态讲解python中的数据,内容包括: 引用与对象 可变数据类型与不可 ...

微信小程序富文本中的图片大小超出屏幕

这个问题我在小程序社区中提的,后来有个帮我回答了这个问题,我试了一下可以. 解决办法是过滤富文本内容,给图片标签添加一个样式,限制图片的最大宽度. replace(/\

ElasticSearch实战——&period;Net Core中的应用

dll引用: NLog.Targets.ElasticSearch,版本:4.0.0-beta26 Nlog,版本:4.5.0-rc04 Microsoft.Extensions.Configurat ...

c&num;中的几种Dialog

1.OpenFileDialog private void FileOpen_Click(object sender, EventArgs e) { OpenFileDialog openFile = ...

【Redis】windows环境下安装redis服务器,并配置php的redis扩展

win7示例: 1.下载Redis服务器 : https://github.com/dmajkic/redis/downloads:(随便下,建议不要太老的) 2.在D:\phpStudy\ 新建Re ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值