Python如何基于中心坐标生成x/y±2范围内的坐标点列表
Python实现生成指定范围坐标列表
实现思路
你需要的25个坐标本质是中心点x、y分别叠加-2/-1/0/1/2的偏移量得到的全组合,我们只要保留已有中心点作为列表首元素,再把其余偏移组合对应的坐标追加到列表即可。
代码实现
基础写法(无需额外依赖,可读性高)
# 初始坐标列表,中心点为第一个元素 coord_list = [[1, 2]] center_x, center_y = coord_list[0] # 遍历x、y的所有偏移范围 for dx in range(-2, 3): for dy in range(-2, 3): # 跳过中心点偏移,避免重复添加 if dx == 0 and dy == 0: continue coord_list.append([center_x + dx, center_y + dy]) # 验证结果 print(len(coord_list)) # 输出25 print(coord_list[0]) # 输出[1, 2]
简洁写法(基于itertools)
import itertools coord_list = [[1, 2]] center_x, center_y = coord_list[0] # 生成所有偏移组合,过滤中心点后批量追加 offsets = itertools.product(range(-2, 3), repeat=2) coord_list.extend([center_x + dx, center_y + dy] for dx, dy in offsets if dx != 0 or dy != 0)
说明
range(-2, 3)会生成-2、-1、0、1、2共5个整数,x、y偏移全组合刚好是5*5=25个点- 跳过
(0,0)偏移的逻辑可以保证初始中心点始终在列表第一位,不会被重复添加
内容的提问来源于stack exchange,提问作者xc120
相关产品推荐
相关产品推荐

