我想要创建两个坐标数组,这两个坐标是同心正方形或偶数圆形的两个区域(正方形是我能够思考和实际尝试制作的唯一一个,但在开始时最终我想要简单的方形同心界)。
简单地说,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])上创建并在中间切出一大块并将其分配给另一个值。在上面的代码中,它是coord
和ncrd
。
编辑:忘记提及,在程序开头输入m
和n
,因此它们不是特定值,可以是3到我的计算机可以采用的任何可能值
答案 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)