我能有条件地选择给哪个变量赋值吗?

2024-10-04 05:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在Python中可以执行以下操作:

var = value1 if( booleanCheck() ) else value2

我想知道的是,我是否可以有条件地选择将值放入具有类似结构的var中?在

像这样:

^{pr2}$

在我的例子中,我试图在二叉搜索树中将一个子节点分配到正确的一侧,我知道我可以做一个普通的if块,但我试图挑战自己使用最小空间。在


Tags: if节点var空间条件结构else中将
3条回答

由于用例是分配给二叉树的正确的一侧,我假设分配目标实际上是某个树节点的属性,通常的代码是

if condition:
    node.left = value
else
    node.right = value

此代码可以替换为

^{pr2}$

或者另一种选择

vars(node)["left" if condition else "right"] = value

它可以被这个取代,但它真的不应该。在

理论上你可以这样做,如果两个变量都已经定义好了:

var1, var2 = (value, var2) if booleanCheck() else (var1, value)

但不是说你应该这么做。在

以这种方式使用locals或{}不是很好的形式(容易混淆、不常使用、难以调试、性能差),但是可以这样做:

varname = 'a' if some_condition else 'b'
locals()[varname] = value # or globals()
print locals()[varname] # or globals()

我认为这里真正的挑战是抵制看似“花哨”或“创造性”的代码,并编写其他人马上就能理解的代码。更不用说你自己了,如果你以后还要再来的话。但值得一提的是,知道什么样的时髦代码(就像在旧奶酪中一样)。在

相关问题 更多 >