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

时间:2018-10-19 12:58:00

标签: python python-3.x matrix

我想创建一个给出列表和范围的函数:

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]...]

3 个答案:

答案 0 :(得分:0)

您可以将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)]

答案 1 :(得分:0)

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)

我明白了,没有想到立即添加列表。我要附加单个元素

答案 2 :(得分:0)

使用列表理解:

>>> 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], ...]]