我想创建一个给出列表和范围的函数:
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]...]
答案 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], ...]]