打印给定 X 和 Y 的所有周围坐标



我想做一个给定列表和范围的函数:

coordinate=[x,y]

创建一个包含范围内所有整数点的列表。 例如

coordinate=[0,0]
range=1

会回来

[[-1,1],[0,1],[1,1],[-1,0],[0,0],[0,1],[-1,-1],[0,-1],[1,-1]]

同样,范围 2 将返回

[[-2,2],[-1,2],[0,2]...]

您可以将itertools.product与一致的range一起使用。说到range,你应该为range变量选择一些其他名称,例如dist.

>>> coordinate = (x,y) = (0, 0)
>>> dist = 1
>>> [(x+dx, y+dy) for (dx, dy) in itertools.product(range(-dist, dist+1), repeat=2)]
[(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 0), (0, 1), (1, -1), (1, 0), (1, 1)]

如果您希望使用与示例输出中完全相同的顺序,请尝试以下变体:

>>> [(x+dx, y+dy) for (dy, dx) in itertools.product(range(dist, -dist-1, -1), range(-dist, dist+1))]
[(-1, 1), (0, 1), (1, 1), (-1, 0), (0, 0), (1, 0), (-1, -1), (0, -1), (1, -1)]
def coord(x,y,range_of_search):
scan=range_of_search
blank=[]
for i in range(x-scan,x+scan+1):
for j in range(y-scan,y+scan+1):
blank.append([i,j])
print(blank)
coord(0,0,2)

我明白了,没有想到一次附加列表。我正在附加单个元素

使用列表理解:

>>> ranges = 1
>>> [[y, x] for x in range(ranges, -(ranges + 1), -1) for y in range(-ranges, ranges + 1)])
[[-1, 1], [0, 1], [1, 1], [-1, 0], [0, 0], [1, 0], [-1, -1], [0, -1], [1, -1]]
>>> ranges = 2
>>> [[y, x] for x in range(ranges, -(ranges + 1), -1) for y in range(-ranges, ranges + 1)])
[[-2, 2], [-1, 2], [0, 2], ...]]

最新更新