网站首页 > java教程 正文
python的三元表达式相信学过python的朋友都会。但是大部分学python的朋友不知道的是三元表达式还可以嵌套三元表达式。
请看代码案例:
cmp = lambda a, b: 0 if a == b else 1 if a > b else -1
print(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 0
else:
if a > b:
return 1
else:
return -1
print(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的知识点。
猜你喜欢
- 2024-10-30 零基础学习JAVA-04.运算符(零基础学java全集)
- 2024-10-30 详解Python开发中的三元表达式#三元表达式#布尔类型
- 2024-10-30 十七、Java选择控制语句(java中提供了哪两种实现选择控制的语句)
- 2024-10-30 第一章:java基本语法之运算符和表达式(2)
- 2024-10-30 三元运算(三元运算符)
- 2024-10-30 这几个牛B的Python语法,你需要了解下
- 2024-10-30 C语言三目运算符背后技术详解(c语音中的三目运算符)
- 2024-10-30 Day15-Python基础知识-条件表达式(三元操作符)
- 2024-10-30 CSP-NOIP信息学竞赛(33)三目运算符 问号表达式 if else
- 2024-10-30 9个小技巧让你的 if else看起来更优雅
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)