如何用Python列表推导式获取坐标点偏移1的周边边界点
问题解答:Python列表推导式获取坐标点周边邻域点
给定输入坐标点p = (y, x),要获取偏移量为1的3x3网格周边边界点,可通过以下列表推导式实现:
实现代码
# 先解包输入坐标 y, x = p # 生成无重复的8个周边邻域点 neighbors = [(y + dy, x + dx) for dy in (-1, 0, 1) for dx in (-1, 0, 1) if not (dy == 0 and dx == 0)]
说明
- 你提供的示例结果存在重复坐标(
(y+1,x+1)、(y-1,x-1)各出现2次),属于输入笔误,上述代码生成的是无重复的合法8个邻域点,结果如下:[(y-1, x-1), (y-1, x), (y-1, x+1), (y, x-1), (y, x+1), (y+1, x-1), (y+1, x), (y+1, x+1)] - 如果需要匹配自定义的点顺序,只需要调整
dy和dx的遍历序列顺序即可。 - 3x3网格的所有位置对应逻辑和你给出的表格完全匹配,仅排除了中心点
(y, x)。
内容的提问来源于stack exchange,提问作者konichiwa
相关产品推荐
相关产品推荐

