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之三元表达式嵌套三元表达式解析相关推荐

  1. python列表生成式原理_三元表达式/和/或如何在Python中工作/真与假的性质/列表生成/生成器,and,or,执行,原理,True,False,本质,生成式...

    一看标题,看似是三个不相关的问题,实际上息息相关. 我们都知道,"C系语言(C\C++.C#.Java等)"都有一个共同的知识点:三目运算符,其主要作用还是为了简化选择结构语句.让 ...

  2. java三元表达式嵌套_三元运算符的嵌套详解:分别在JSTL、JavaScript和Java中

    用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行. 使用格式: (条件表达式)?表达式1:表达式2: 运算规则:条件表达式  值为一个布尔值,当值为true的时候 执行表达式1   否 ...

  3. python 三元表达式_Python三元表达式

    我们知道Python没有三元表达式,但是我们通过技巧达到三元表达式的效果. 摘自<Dive Into Python>: 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的 ...

  4. Python 中的三元运算符,三目表达式

    三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在Python 2.4以上才有了三元操作. 下面是一个伪代码和例子: 伪代码: Python ...

  5. Python中的三目运算符(三元表达式)

    Python中的三目运算符(三元表达式) 一般支持三目运算符的语言(如C语言)的语法格式一般是这样的: 判断条件(返回布尔值)?为真时的结果:为假时的结果 比如: x = x%2==1 ? x+1:x ...

  6. js“三元表达式” (三元运算符)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liu_jiachen/article/ ...

  7. java前端有三元表达_js 三元表达式

    发现代码慢慢写多了的时候会不自觉的将if else 用 三元来替代,仅仅是未了让代码更简洁精辟,当然也有人说用三元可以让你有高潮的感觉.最近在写js 的时候也有这样的感觉,并且收集了一些小技巧,分享分 ...

  8. js问号表达式(三元表达式)

    表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3. ========== ...

  9. 【视频】vue 插值表达式之三元运算符的使用

    P18vue 插值表达式之三元运算符的使用 https://www.bilibili.com/video/av91679349?p=18

最新文章

  1. 解决ASP网页乱码的问题
  2. XDebug分析php代码性能
  3. 计算机的发展知识点,计算机一级MsOffice考试知识点:计算机的发展
  4. Eclipse集成jboss7.1
  5. opencv学习笔记10:阈值分割
  6. Spring Security使用Hibernate实现自定义UserDetails
  7. 【渝粤题库】陕西师范大学200411 数学建模 作业(专升本)
  8. SQL Server流程介绍
  9. 商汤插帧算法让视频顺滑如丝丨NeurIPS 2019 Spotlight论文
  10. PHP判断pc和移动端跳转,JS判断是PC还是移动端浏览器,并根据不同的终端跳转到不同的网址...
  11. CCF NOI1034 钞票兑换
  12. 多校训练 Naive Operations线段树区间更新
  13. 错误ImportError: 'No module named skimage.io'和ImportError: No module named google.protobuf.internal
  14. Stephen R.Covey《高效人士的7个习惯》
  15. 谷歌查排名php,谷歌排名检查:PHP函数来获得googlerank关键词 | LsevenTT博客-站群哥...
  16. MTK功能机ATA导入
  17. 深度学习新手神器,floydhub gpu云主机!
  18. origin 作图时 下面出现一条Y=0直线怎么去掉
  19. CTF之Accept-Language规范总结
  20. Vue2.x - Vuex

热门文章

  1. echart 多柱图只显示部分数据标签_python|读取Excel生成pyecharts动态分析图
  2. NASM汇编语言与计算机系统02-实模式-显存原理
  3. SQLite3中的SQL基本语句和高级语句
  4. spring cloud config动态刷新_Spring Cloud学习笔记--配置中心(Config)
  5. win7 64位运行不了服务器,G6-e标准包可以装在win7 64位系统上吗?现在提示不能登陆到服务器...
  6. unity 主线程调用_Kafka的Producer的调用序列图
  7. python字符串,列表常用操作
  8. nodejs生成UID(唯一标识符)——node-uuid模块
  9. 六款值得推荐的android(安卓)开源框架简介
  10. Silverlight开发廋身攻略(二)