python之三元表达式嵌套三元表达式解析
python的三元表达式相信学过python的朋友都会。但是大部分学python的朋友不知道的是三元表达式还可以嵌套三元表达式。
请看代码案例:
cmp = lambda a, b: 0 if a == b else 1 if a > b else -1print(cmp(3,2))
print(cmp(2,3))
print(cmp(2,2))out:
1
-1
0
以上代码的功能是对两个数进行比较,若第一个数等于第二个数返回0;若第一个数大于第二个数返回1;若第一个数小于第二个数返回-1。
直接看是不是比较懵?我把它拆分一下,换一种写法,会容易懂得多。
def cmp2(a, b):if a == b:return 0else:if a > b:return 1else:return -1print(cmp2(3, 2))
print(cmp2(2, 3))
print(cmp2(2, 2))out:
1
-1
0
可以看到上述2个函数功能完全一致,第一种写法简洁的多!
再来熟悉一下这种写法,为了便于理解我多加了对括号:
0 if a == b else (1 if a > b else -1)
这种语句是三元表达式嵌套三元表达式的结构,从左向右计算。
三元表达式首先找if,找到if判断a ==b (判断元素):
- 若该条件满足则返回if左边的0(结果元素1)作为整个表达式的运算结果。
- 若该判断条件不满足则返回判断条件右边的三元表达式(结果元素2)。
右边仍然是三元表达式,继续计算该三元表达式,找到if判断a>b(判断元素):
- 若该条件满足则返回if左边的1(结果元素1)作为整个表达式的运算结果。
- 若该判断条件不满足则返回判断条件右边的-1(结果元素2)作为整个表达式的运算结果。
python的三元表达式非常灵活,从上述案例中可以学习到三元表达式的结果元素可以是三元表达式,也就是说三元表达式可以嵌套三元表达式使用。
三元表达式嵌套三元表达式的结构并不难懂,熟练掌握以后会让你的代码更简洁,用三元表达式嵌套三元表达式感觉比用if else if else瞬间高大上了很多,嘻嘻。
python之三元表达式嵌套三元表达式解析相关推荐
- python列表生成式原理_三元表达式/和/或如何在Python中工作/真与假的性质/列表生成/生成器,and,or,执行,原理,True,False,本质,生成式...
一看标题,看似是三个不相关的问题,实际上息息相关. 我们都知道,"C系语言(C\C++.C#.Java等)"都有一个共同的知识点:三目运算符,其主要作用还是为了简化选择结构语句.让 ...
- java三元表达式嵌套_三元运算符的嵌套详解:分别在JSTL、JavaScript和Java中
用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行. 使用格式: (条件表达式)?表达式1:表达式2: 运算规则:条件表达式 值为一个布尔值,当值为true的时候 执行表达式1 否 ...
- python 三元表达式_Python三元表达式
我们知道Python没有三元表达式,但是我们通过技巧达到三元表达式的效果. 摘自<Dive Into Python>: 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的 ...
- Python 中的三元运算符,三目表达式
三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在Python 2.4以上才有了三元操作. 下面是一个伪代码和例子: 伪代码: Python ...
- Python中的三目运算符(三元表达式)
Python中的三目运算符(三元表达式) 一般支持三目运算符的语言(如C语言)的语法格式一般是这样的: 判断条件(返回布尔值)?为真时的结果:为假时的结果 比如: x = x%2==1 ? x+1:x ...
- js“三元表达式” (三元运算符)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liu_jiachen/article/ ...
- java前端有三元表达_js 三元表达式
发现代码慢慢写多了的时候会不自觉的将if else 用 三元来替代,仅仅是未了让代码更简洁精辟,当然也有人说用三元可以让你有高潮的感觉.最近在写js 的时候也有这样的感觉,并且收集了一些小技巧,分享分 ...
- js问号表达式(三元表达式)
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3. ========== ...
- 【视频】vue 插值表达式之三元运算符的使用
P18vue 插值表达式之三元运算符的使用 https://www.bilibili.com/video/av91679349?p=18
最新文章
- 解决ASP网页乱码的问题
- XDebug分析php代码性能
- 计算机的发展知识点,计算机一级MsOffice考试知识点:计算机的发展
- Eclipse集成jboss7.1
- opencv学习笔记10:阈值分割
- Spring Security使用Hibernate实现自定义UserDetails
- 【渝粤题库】陕西师范大学200411 数学建模 作业(专升本)
- SQL Server流程介绍
- 商汤插帧算法让视频顺滑如丝丨NeurIPS 2019 Spotlight论文
- PHP判断pc和移动端跳转,JS判断是PC还是移动端浏览器,并根据不同的终端跳转到不同的网址...
- CCF NOI1034 钞票兑换
- 多校训练 Naive Operations线段树区间更新
- 错误ImportError: 'No module named skimage.io'和ImportError: No module named google.protobuf.internal
- Stephen R.Covey《高效人士的7个习惯》
- 谷歌查排名php,谷歌排名检查:PHP函数来获得googlerank关键词 | LsevenTT博客-站群哥...
- MTK功能机ATA导入
- 深度学习新手神器,floydhub gpu云主机!
- origin 作图时 下面出现一条Y=0直线怎么去掉
- CTF之Accept-Language规范总结
- Vue2.x - Vuex
热门文章
- echart 多柱图只显示部分数据标签_python|读取Excel生成pyecharts动态分析图
- NASM汇编语言与计算机系统02-实模式-显存原理
- SQLite3中的SQL基本语句和高级语句
- spring cloud config动态刷新_Spring Cloud学习笔记--配置中心(Config)
- win7 64位运行不了服务器,G6-e标准包可以装在win7 64位系统上吗?现在提示不能登陆到服务器...
- unity 主线程调用_Kafka的Producer的调用序列图
- python字符串,列表常用操作
- nodejs生成UID(唯一标识符)——node-uuid模块
- 六款值得推荐的android(安卓)开源框架简介
- Silverlight开发廋身攻略(二)