这是今天在温习lambda表达式的时候想到的问题,众所周知C系列语言中的 三元运算符(?:)是一个非常好用的语句,
关于C中的三元运算符 表达式1?表达式2:表达式3
那么在python应该如何实现呢,请看下面例子:
答案是:
X = (表达式1)and 表达式2(真值返回)or 表达式3(假值返回)(注:表达式2 以及 表达3 不能为0、''、[]、()、{}、None)
举个例子:
def main(): y = 5 x = (y > 5) and 2 or 4
print x pass
这段代码的是意思的输出是4,可以把表达式的条件改为(y<=5)这时候输出就是2
为什么能得到这样的结果:
基于上述的背景,你应该还能理解这个表达式的含义了吧。
“注:“里面应该是这个用法的一些缺陷,如果表达式2或3是几个定义的假值( 0、''、[]、()、{}、None )之一,就会影响判断了,我的建议是吧这些假值都用字符串的形式表现,并且将“”特殊处理为“ ”。后续再做判断
再次见识到Python的强大,如果您有什么见解欢迎评论。