在Python中替换三元运算符的最好方法是什么?
可能重复:
Python中的三元条件运算符
如果我有这样的代码:
x = foo ? 1 : 2
我应该如何将它翻译成Python? 我可以这样做吗?
if foo:
x = 1
else:
x = 2
x还会在if / then块之外的范围内吗? 还是我必须做这样的事情?
x = None
if foo:
x = 1
else:
x = 2
在Python 2.5+中使用三元运算符(正式条件表达式)。
x = 1 if foo else 2
所提到的三元运算符只能从Python 2.5中获得。 来自WeekeePeedeea:
虽然由于语法方面的分歧而拖延了好几年,但Python的三元运算符被批准为Python增强建议308,并于2006年9月被添加到2.5版本。
Python的三元运算符与常用的?:运算符按其操作数的顺序不同; op1 if condition else op2
,一般形式是op1 if condition else op2
。 该表格邀请将op1视为正常值,op2视为例外情况。
在2.5之前,人们可以使用丑陋的语法(lambda x:op2,lambda x:op1)[condition]()
,它也只考虑计算实际需要的表达式以防止副作用。
我在我的一个项目中仍然使用2.4,并且遇到过几次。 我看到的最优雅的解决方案是:
x = {True: 1, False: 2}[foo is not None]
我喜欢这个,因为它代表了一个更清晰的布尔测试,而不是使用索引值为0和1的列表来获得您的返回值。
链接地址: http://www.djcxy.com/p/7395.html上一篇: What's the best way to replace the ternary operator in Python?