python可以压缩逻辑运算符吗?

Mar*_*mer 2 python python-3.x

我有这行代码:

if x + dx < 0 or y + dy < 0 or x + dx == len(grid) or y + dy == len(grid):
Run Code Online (Sandbox Code Playgroud)

然而,由于我在多个表达式上进行相同的比较,因此感觉笨拙且过长.在更大的比较中,这最终会占用大量不必要的空间.

有没有办法将它压缩成如下:

if x + dx or y + dy < 0 or x + dx or y + dy == len(grid):
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

不,布尔运算符不能被压缩; 计算机语言在理解英语语法方面相当不好.

只计算一次x + dxy + dy结果,并在测试中使用结果:

xdx, ydy = x + dx, y + dy
if xdx < 0 or ydy < 0 or xdx == len(grid) or ydy == len(grid):
Run Code Online (Sandbox Code Playgroud)

或者,如果您反转测试,则可以使用链式比较:

if not (0 >= x + dx > len(grid) and 0 >= y + dy > len(grid)):
Run Code Online (Sandbox Code Playgroud)