如何实现coords函数生成指定格式的坐标二维列表?
实现coords坐标生成函数
需求说明
需要实现一个coords函数,满足:
- 传入参数3时,返回:
[[(-1, -1), (-1, 0), (-1, 1)], [(0, -1), (0, 0), (0, 1)], [(1, -1), (1, 0), (1, 1)]] - 传入参数2时,返回:
[[(-1, -1), (0, -1)], [(0, -1), (0, 0)]]
问题分析
从给出的示例可以拆解出两种生成逻辑:
- 当N为奇数:生成中心在原点的N×N完整网格,x和y的取值范围均为
-(N-1)/2到(N-1)/2,每个子列表对应一个固定x值,遍历所有y值生成坐标对。 - 当N为偶数:生成L形坐标集合,第一个子列表是y取最小值时的所有x坐标对,第二个子列表是x取最大值时的所有y坐标对。
解决代码
def coords(N): if N % 2 == 1: # 奇数情况:生成完整N×N网格 start = -(N - 1) // 2 coords_range = [start + i for i in range(N)] return [[(x, y) for y in coords_range] for x in coords_range] else: # 偶数情况:生成L形坐标集合 start = -N // 2 end = start + N - 1 # 第一组:y固定为最小值,遍历x group1 = [(x, start) for x in range(start, end + 1)] # 第二组:x固定为最大值,遍历y group2 = [(end, y) for y in range(start, end + 1)] return [group1, group2]
代码验证
- 调用
coords(3),返回结果与预期完全一致; - 调用
coords(2),返回结果与预期完全一致。
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

