标签:python
三目运算符,是c语言的重要组成部分。条件运算符是唯一有三个操作数的运算符,又称为三元运算符。
在c语言风格的语言中,三元操作符的形式如下:
<span style="font-family:Arial;font-size:12px;color:#333333;"><condition> ? <expression1> : <expression2></span>
<span style="font-family:Arial;font-size:12px;color:#333333;">(X, Y)[C]</span>
其中C为条件,如果C不成立,那么元祖中的第一个元素X被返回,如果C成立,那么返回第二个元素Y。
P.S. 不推荐。 因为表达式X,Y都会执行,而我们仅需要一个。
<span style="font-family:Arial;color:#333333;"><span style="font-size:12px;">val = float(raw_input('Age: '))
print 'You should be', ('working','retired')[val>65]
# result
Age: 67
You should be retired</span></span>
表达式变形:
age = 15
# Selecting an item from a tuple
print(('adult', 'kid')[age < 20])
# Which is the equivalent of...
print(('adult', 'kid')[True])
# Or more explicit by using dict
print({True: 'kid', False: 'adult'}[age < 20])
# using lambda
age = 15
print((lambda: 'kid', lambda: 'adult')[age > 20]())
# using and/or
age = 15
print (age < 20) and 'kid' or 'adult'
从python 2.5开始,当PEP 308被采用之后,引入了单行的if表达式,用来替代三目运算符。
<expression1> if <condition> else <expression2>
val=float(raw_input('Age:'))
print 'You should be','retired' if val>65 else 'working'
# result
Age:76
You should be retired
使用如下代码检测:
def f1():
print "f1!"
return 1
def f2():
print "f2!"
return 2
if __name__ == "__main__":
v = f1() if True else f2()
print "v =", v
print "-" * 10
v2 = f1() if False else f2()
print "v2 =", v2
# result
f1!
v = 1
----------
f2!
v2 = 2
age = 15
print('kid') if age < 12 else ('teenager') if age < 18 else ('adult')
# teenager
# Which is the same as:
if age < 18:
if age < 12:
print('kid')
else:
print('teenager')
else:
print('adult')
# teenagerfrom pprint import pprint
pprint('expression_1') if pprint('condition_1') else pprint('expression_2') if pprint('condition_2') else pprint('expression_3')
# result
'condition_1'
'condition_2'
'expression_3'
参考:
http://www.pythoncentral.io/one-line-if-statement-in-python-ternary-conditional-operator/
http://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator
http://oldj.net/article/python-ternary-operator/
Python interview - ternary conditional operator 三目运算符
标签:python
原文地址:http://blog.csdn.net/bearkino/article/details/41079383