You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化Python邻近检测函数,减少逻辑或、与操作?

简化相邻节点检测函数的几种写法

原函数通过重复判断双向坐标偏移实现相邻检测,但存在大量冗余逻辑,以下是几种更简洁且功能完全等价的实现方式:

方法1:利用曼哈顿距离计算

当两个节点的曼哈顿距离为1时,恰好是上下左右相邻的状态,直接计算距离并判断即可:

def prox(p, s):
    return abs(p[0] - s[0]) + abs(p[1] - s[1]) == 1

方法2:明确判断相邻的两种核心情况

分别计算x、y坐标差的绝对值,判断是否属于「x方向差1且y方向无偏移」或「y方向差1且x方向无偏移」:

def prox(p, s):
    dx, dy = abs(p[0]-s[0]), abs(p[1]-s[1])
    return (dx == 1 and dy == 0) or (dx == 0 and dy == 1)

方法3:匹配相邻坐标差的固定模式

将坐标差的元组与预定义的相邻模式集合对比,逻辑直观清晰:

def prox(p, s):
    return (abs(p[0]-s[0]), abs(p[1]-s[1])) in {(1, 0), (0, 1)}

以上写法均去除了原函数中重复的双向判断,代码更简洁易读,同时完整保留了原函数的核心功能——检测两个节点是否恰好相距一个单位(上下左右相邻)。

内容的提问来源于stack exchange,提问作者Paulo Corrêa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:40:30