版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
python同时被 3 个专栏收录
3 篇文章0 订阅
订阅专栏
1 篇文章0 订阅
订阅专栏
5 篇文章0 订阅
订阅专栏
如果是普通的三元,if else 正常的结构让人看到有一些冗余,下面有三种方法:
a, b, c = 1, 2, 3
#第一种"值1 if 条件 else 值2",把它看成天平的话就非常好记忆了
a, b, c =1, 2, 3
c = a if a>b else b
c
#第二种如果 a>b为False,就拿列表第一个位置a,是Ture,就拿列表的第二位置b 列表第一个位置为list[0],第二个位置
为list[1]
c = [a>b][a, b]
a,b,c =1,2,3 c = [a,b][a > b] print(a,b,c)
#第三种(c and [a] or [b])[0] 当c为真时走a,当c为假时走b
这个有点吊,之前听说c= a>b and a or b 会由bug,当a为假的时候,会输出b,当把a变成列表形式[a],可以排除这种例外,因为列表有元素a,并不是空列表~
例外如下:
c ='' a ='' b ='我是有东西的' d = candaorb print(d)c ='' # a = '' a ='我是由东西的' b ='我是有东西的' d = candaorb print(d)
输出结果:我是由东西的
也就是a为False,'',None就不行
改成(c and [a] or [b])[0],可以杜绝列外