使用三元if语句条件应用于两个变量

时间:2018-06-07 12:45:08

标签: python

我正在尝试应用一行if else语句,但是使用条件来确定要应用赋值的变量。这可能吗?

这个例子显然是不正确的,但希望有助于了解我想要做的事情:

a = 4
var1 = a if a == 4 else var2 = a

6 个答案:

答案 0 :(得分:9)

您可以编写正常的if语句

if a == 4:
    var1 = a
else:
    var2 = a

python三元运算符不适用于赋值。

答案 1 :(得分:5)

with tuple unpacking:

var1, var2 = (a, var2) if a == 4 else (var1, a)

编辑:我回答了这个有趣的事情,但很好的答案是梅尔(常规)(

答案 2 :(得分:3)

听起来像一个XY问题。如果var1var2可以包含相同的内容,则可以将它们存储在list个变量中。在这种情况下,使用测试结果来计算索引:

a = 4
vars = [0,0]

vars[a==4] = a

>>> vars
[0, 4]

答案 3 :(得分:1)

你问的是可以在python中使用globals字典。即使定义了var1var2

e.g:

globals()['var1' if a == 4 else 'var2'] = a

但是,我不认为这是一个好习惯,如果你需要在代码中访问var1var2,那么其中一个会导致错误

例如给出代码

a = 0

if a == 4:
  var1 = a
else:
  var2 = a

print("var1={}, var2={}".format(var1, var2))

会导致:

NameError: name 'var1' is not defined

为避免这种情况,最好事先定义变量。

a = 0

var1 = None
var2 = None

if a == 4:
  var1 = a
else:
  var2 = a

如果你喜欢单行,你可以有2个单行:

var1 = a if a == 4 else None
var2 = a if a !=4 else None

答案 4 :(得分:0)

它可怕,不应该做,但应该工作。

var1, var2 = [var1,a][a==4], [b,var2][a==4]

答案 5 :(得分:0)

https://repl.it/repls/ExcellentCreepyDonateware

a = 4

var1=0
var2=0

(var1,var2) = (a,var2) if a == 4 else (var1,a)

print (var1,var2)