Python-equivalent of short-form “if” in C++
Possible Duplicate:
Python Ternary Operator
有没有办法在Python中编写这个C/C++代码?a = (b == true ?"123" :"456" )
- 顺便说一下,它叫做三元。en.wikipedia.org/wiki/%3f:,en.wikipedia.org/wiki/ternary_操作
- …或"条件表达式"
1
| a = '123' if b else '456' |
- python 2.5中引入了这个三元运算符。
- 谢谢!正是我要找的。在python docs网站上找不到它。
- 下面是条件表达式的python文档,供将来参考:docs.python.org/reference/expression s.html boolean operation‌&8203;s
- 那是什么意思?
虽然a = 'foo' if True else 'bar'是执行三元if语句(python 2.5+)的更现代的方法,但您的版本的1对1等价物可能是:
1
| a = (b == True and"123" or"456" ) |
…在python中应该缩短为:
1
| a = b is True and"123" or"456" |
…或者如果你只是想测试B值的真实性…
从字面上看,? :可以换成and or。
- 这是什么样的黑魔法?谢谢
- 我应该注意,如果"123"值实际上是一个空字符串或计算结果是一个错误值,这里的and..or方法可能会对您产生不利影响。如果…否则会更安全一点。
- 整洁!谢谢。
我的神秘版本…
1
| a = ['123', '456'][b == True] |
- 这是单行if语句可能出现之前的老方法之一,对吧?有点像你怎么用逻辑来做:True and"foo" or"bar" 。
更多信息请参见PEP 308。
- 虽然这在理论上可以回答问题,但最好在这里包括答案的基本部分,并提供链接以供参考。