在python中切换到不同变量的赋值?用三元运算符?

在python中切换到不同变量的赋值?用三元运算符?,python,coding-style,switch-statement,ternary-operator,Python,Coding Style,Switch Statement,Ternary Operator,我尝试使用python三元运算符来表示 a = 1 if test else b = 1 (其中,test有一些布尔值),但这似乎是不可能的(另请参见)。所以我的问题是:这确实是不可能的,还是有比这更优雅的方式来完成这项任务 if test: a = 1 else: b = 1 已经谢谢你了 < P>只有一条线有条件赋值,但我不认为它是“优雅”的。< /P> 结果: (1, 42) 作为一种替代方法,考虑使用字典存储您的 < < /代码>和 b>代码>值。

我尝试使用python三元运算符来表示

a = 1   if   test   else   b = 1
(其中,
test
有一些布尔值),但这似乎是不可能的(另请参见)。所以我的问题是:这确实是不可能的,还是有比这更优雅的方式来完成这项任务

if test:
    a = 1
else:
    b = 1

已经谢谢你了

< P>只有一条线有条件赋值,但我不认为它是“优雅”的。< /P> 结果:

(1, 42)

作为一种替代方法,考虑使用字典存储您的<代码> < < /代码>和<代码> b>代码>值。

test = True
d = {"a": 23, "b": 42}
d["a" if test else "b"] = 1
print d
#result: {'a': 1, 'b': 42}
或者,如果名称没有语义值,则将数字存储在列表中

test = True
seq = [42, 23]
seq[test] = 1
print seq
#result: [42, 1]

我认为使用if语句更具可读性。您的问题是赋值是Python中的语句,而“三元运算符”是一个表达式(更准确地称为条件表达式)。条件表达式可以构成赋值语句的右侧,但不能将该表达式用作在一行上组合两个赋值的方式。
test = True
seq = [42, 23]
seq[test] = 1
print seq
#result: [42, 1]