Skip to main content
 首页 » 编程设计

python之单行 if 语句之Python

2025年05月04日10yjmyzz

我有

if board[a][b] == 0: 
     board[a][b] = chr(current_char) 

我想重构为一行。类似于以下内容:

board[a][b] = chr(current_char) if board[a][b] == 0 

看来我最接近的是

board[a][b] = chr(current_char) if board[a][b] == 0 else board[a][b] 

但是 else 子句似乎是多余的。有没有在风格上更好的方法来实现这一目标?

请您参考如下方法:

在 Python 有三元运算符之前,Oldschool Python 有一个处理三元的技巧。实际上,这个技巧适用于许多编程语言。如果您保证不使用它,我只会告诉您。

promise ?

[val_if_false, val_if_true][bool(条件)]

OK,现在Python有了三元,看起来像

val_if_true if condition else val_if_false 

但即使这样也有点草率。如果您真的想要一个衬里,请制作一个功能。

def val(): 
    if condition: 
        return val_if_true 
    else: 
        return val_if_false 

您的特定 案例更专业一些,因为您希望else 成为原始值。你可以做

box[a][b] = box[a][b] or chr(current_char) 

但同样,if 语句的意图更具可读性和清晰性。