Python之三元表达式嵌套三元表达式解析

开发 后端
Python的三元表达式相信学过python的朋友都会。但是大部分学python的朋友不知道的是三元表达式还可以嵌套三元表达式。

Python的三元表达式相信学过python的朋友都会。但是大部分学python的朋友不知道的是三元表达式还可以嵌套三元表达式。

请看代码案例:

  1. cmp = lambda a, b: 0 if a == b else 1 if a > b else -1 
  2. print(cmp(3,2)) 
  3. print(cmp(2,3)) 
  4. print(cmp(2,2)) 
  5. out:1 
  6. -1 

以上代码的功能是对两个数进行比较,若第一个数等于第二个数返回0;若第一个数大于第二个数返回1;若第一个数小于第二个数返回-1。

直接看是不是比较懵?我把它拆分一下,换一种写法,会容易懂得多。

  1. def cmp2(a, b): 
  2.     if a == b: 
  3.         return 0 
  4.     else
  5.         if a > b: 
  6.             return 1 
  7.         else
  8.             return -1 
  9. print(cmp2(3, 2)) 
  10. print(cmp2(2, 3)) 
  11. print(cmp2(2, 2)) 
  12. out:1 
  13. -1 

可以看到上述2个函数功能完全一致,第一种写法简洁的多!

再来熟悉一下这种写法,为了便于理解我多加了对括号:

  1. 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瞬间高大上了很多,嘻嘻。

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2023-11-30 08:30:12

Python三元表达

2018-10-08 08:00:00

前端ReactJavaScript

2023-09-06 09:40:29

2023-09-07 08:05:32

三元表达式自动

2014-01-05 17:41:09

PostgreSQL表达式

2024-02-02 12:41:33

表达式语法Cron

2010-03-03 12:53:50

Linux正则表达式

2010-08-09 13:58:59

Flex正则表达式

2010-07-13 17:03:53

Perl正则表达式

2010-07-28 11:06:41

Flex正则表达式

2024-03-25 13:46:12

C#Lambda编程

2024-09-14 09:18:14

Python正则表达式

2010-07-14 09:37:46

Perl正则表达式

2011-06-16 15:28:31

正则表达式

2021-01-27 11:34:19

Python正则表达式字符串

2022-12-05 09:31:51

接口lambda表达式

2009-07-03 18:31:04

JSP表达式

2009-09-15 15:18:00

Linq Lambda

2009-09-09 13:01:33

LINQ Lambda

2009-09-11 12:32:33

LINQ表达式
点赞
收藏

51CTO技术栈公众号