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

如何生成给定坐标曼哈顿距离R范围内的所有坐标?Python实现求助

高效生成曼哈顿半径内的坐标(Python实现)

核心思路

直接利用曼哈顿距离的定义 |x| + |y| ≤ r,对每个x值计算出y的有效范围,完全避免遍历无效坐标,这是最优解法,没有多余计算。

实现代码

列表版本(一次性生成所有坐标)

def generate_manhattan_coords(r):
    coords = []
    for x in range(-r, r + 1):
        max_y = r - abs(x)
        for y in range(-max_y, max_y + 1):
            coords.append((x, y))
    return coords

生成器版本(节省内存,按需获取)

如果r值很大,坐标总量会非常多,用生成器可以避免一次性占用大量内存:

def generate_manhattan_coords_gen(r):
    for x in range(-r, r + 1):
        max_y = r - abs(x)
        for y in range(-max_y, max_y + 1):
            yield (x, y)

效率对比

你之前的方法是遍历x、y均从-r到r的所有组合再筛选,会遍历(2r+1)^2个点,但其中只有(r+1)(2r+1)个有效点(曼哈顿半径内点的总数公式),无效遍历占比接近一半。而上面的方法只生成符合条件的坐标,完全没有多余计算,效率达到理想情况的100%。

内容的提问来源于stack exchange,提问作者Simon Knight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:19