我有这行代码:
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)
不,布尔运算符不能被压缩; 计算机语言在理解英语语法方面相当不好.
只计算一次x + dx和y + 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)
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |