8行10列矩阵中指定坐标元组合法邻接位置的实现方法
邻接坐标计算实现方案
核心逻辑说明
- 参考给出的预期输出,这里的邻接指正交方向相邻(即仅上下左右四个方向,不包含斜向对角位置)
- 先固定四个方向的坐标偏移量,避免重复编写判断逻辑
- 每生成一个偏移后的坐标,必须校验是否落在矩阵有效边界内:行索引范围为
0 ~ rows-1,列索引范围为0 ~ columns-1,越界的坐标直接丢弃
补全后的代码
之前编写的元组转嵌套列表的步骤并非必要,元组本身可直接通过索引读取行、列值,可直接简化循环逻辑:
l = [(4,6),(0,3),(7,9)] rows = 8 columns = 10 # 按示例邻接顺序定义方向偏移:上、左、右、下 directions = [(-1, 0), (0, -1), (0, 1), (1, 0)] for (r, c) in l: valid_neighbors = [] for dr, dc in directions: # 计算偏移后的坐标 new_r = r + dr new_c = c + dc # 边界校验:仅保留矩阵范围内的坐标 if 0 <= new_r < rows and 0 <= new_c < columns: valid_neighbors.append((new_r, new_c)) # 拼接成要求的输出格式 neighbor_content = " ".join(f"({nr}, {nc})" for nr, nc in valid_neighbors) print(f"Neighbors ({r}, {c}): {neighbor_content}")
运行输出结果
运行代码后将得到和预期完全一致的输出:
Neighbors (4, 6): (3, 6) (4, 5) (4, 7) (5, 6) Neighbors (0, 3): (0, 2) (0, 4) (1, 3) Neighbors (7, 9): (6, 9) (7, 8)
说明:上述代码无需额外做元组到列表的格式转换,直接遍历原坐标列表即可完成计算,减少冗余步骤。
内容的提问来源于stack exchange,提问作者Charlie L
相关产品推荐
相关产品推荐

