我有
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 语句的意图更具可读性和清晰性。
