如何制作两个坐标数组,同心正方形

时间:2016-04-23 23:27:46

标签: python arrays

我想要创建两个坐标数组,这两个坐标是同心正方形或偶数圆形的两个区域(正方形是我能够思考和实际尝试制作的唯一一个,但在开始时最终我想要简单的方形同心界)。

简单地说,n<m可以获得坐标(m*2-n*2)(n*2)的区域。

我一直在尝试多个'for'循环,如:

a,b=(m-n)/2,(m-(m-n)/2)
ncrd,coord=[],[]
x,y=range(0,m*10,10),range(0,m*10,10)
k,l=0,0
for i in range(m):
    for j in range(m):
        coord.append([0,0])
        coord[k]=[x[i],y[j]]
        k+=1
for i in range((m-n)/2,m-(m-n)/2):
    for j in range((m-n)/2,m-(m-n)/2):
        ncrd.append([0,0])
        ncrd[l]=coord[i*m+j]
        l+=1
    coord[i*m:i*m+j]=[]
    rnd.shuffle(coord),rnd.shuffle(ncrd)

我很确定这是错的,因为它不起作用且逻辑不合理。一直试图用数学方法写出来,但是画空白。

总结:需要在巨型m * m数组([x,y])上创建并在中间切出一大块并将其分配给另一个值。在上面的代码中,它是coordncrd

编辑:忘记提及,在程序开头输入mn,因此它们不是特定值,可以是3到我的计算机可以采用的任何可能值

1 个答案:

答案 0 :(得分:0)

这些线上的东西适用于同心方形区域。对于循环表达式,您需要相应地更改逻辑表达式。

注意:结尾处的结果改组已被遗漏。

m, n = 9, 5
lo = (m-n) // 2
hi = m-lo-1

coords, ncoords = [], []
for x in range(m):
    for y in range(m):
        (ncoords if (lo <= x <= hi) and (lo <= y <= hi) else coords).append((x, y))

print(coords)
print(ncoords)