在Python中替换三元运算符的最佳方法是什么?

mik*_*ike 9 python

可能重复:
Python中的三元条件运算符

如果我有一些代码:

x = foo ? 1 : 2
Run Code Online (Sandbox Code Playgroud)

我应该如何将其翻译成Python?我可以这样做吗?

if foo:
  x = 1
else:
  x = 2
Run Code Online (Sandbox Code Playgroud)

x还会在if/then块之外的范围内吗?或者我必须做这样的事情?

x = None
if foo:
  x = 1
else:
  x = 2
Run Code Online (Sandbox Code Playgroud)

phi*_*hag 28

在Python 2.5+中使用三元运算符(正式条件表达式).

x = 1 if foo else 2
Run Code Online (Sandbox Code Playgroud)


小智 9

一个不错的python技巧是使用这个:

foo = ["ifFalse","ifTrue"][booleanCondition]
Run Code Online (Sandbox Code Playgroud)

它创建一个 2 成员列表,布尔值变为 0(假)或 1(真),选择正确的成员。不是很可读,但是pythony :)


Adr*_*zza 5

提到的Ternary运算符仅在Python 2.5中提供.来自WeekeePeedeea:

尽管由于语法上的分歧已经推迟了几年,但是Python的三元运算符被批准为Python增强提案308并且在2006年9月被添加到2.5版本中.

Python的三元运算符与常用的?:运算符的不同之处在于它的操作数; 一般形式是op1 if condition else op2.此表单邀请将op1视为正常值,将op2视为例外情况.

在2.5之前,人们可以使用丑陋的语法(lambda x:op2,lambda x:op1)[condition](),它也只负责评估实际需要的表达式以防止副作用.