-1

从高中起就没有使用过笛卡尔图,我实际上发现需要它们与现实生活相关。这可能是一个奇怪的需求,但我必须将数据分配给笛卡尔图上的点,这些点可以通过调用笛卡尔坐标来访问。图上必须有无限的点。例如。

                       ^
 [-2-2,a ][ -1-2,f ][0-2,k ][1-2,p][2-2,u]
 [-2-1,b ][ -1-1,g ][0-1,l ][1-1,q][1-2,v]
<[-2-0,c ][ -1-0,h ][0-0,m ][1-0,r][2-0,w]>
 [-2--1,d][-1--1,i ][0--1,n][1-1,s][2-1,x]
 [-2--2,e][-1--2,j ][0--2,o][1-2,t][2-2,y]
                       v

实际值并不重要。但是,假设我在变量 m 上,这将是笛卡尔图上的 0-0。如果我向上移动一个空间,我需要计算笛卡尔坐标,这将使我留在 l 上。

从理论上讲,假设我有一个 == ("0-1") 的 python 变量,我相信我需要在 - 处拆分它,这将留下 x=0,y=1。然后,我需要执行 (int(y)+1),然后将 x 重新附加到 y,并在其间添加一个“-”。

我想要做的是使用参数 (x+1,y+0) 调用一个函数,并让程序执行上述操作,然后返回它计算的笛卡尔坐标。

我实际上不需要检索空间的值,只需要笛卡尔坐标。我想我可以使用 re.sub(),但是我不确定如何正确格式化此函数以围绕“-”进行拆分,而且我也不确定如何正确执行计算。

我该怎么做?

4

3 回答 3

2

要表示无限格,请使用将元组 (x,y) 映射到值的字典。

grid[(0,0)] = m
grid[(0,1)] = l

print(grid[(0,0)])
于 2012-05-06T12:10:44.777 回答
1

我不确定我是否完全理解这个问题,但我建议使用列表列表来获取 2D 结构。

然后查找您可以执行的特定值,coords[x-minX][y-minY]其中 x,y 是您想要的整数索引,而 minX 和 minY 是最小值(在您的示例中为 -2)。

您可能还想查看NumPy,它提供了一种更加灵活的 n-dim 对象数组类型,允许您“切片”每个轴或获取子范围。如果您不熟悉使用这样的数组,NumPy 文档可能会有所帮助。

编辑:要将字符串拆分0-1为组成整数,您可以使用:

s = '0-1'
[int(x) for x in s.split('-')]
于 2012-05-06T12:13:08.153 回答
0

您想在变量名称和坐标之间创建双向映射,然后您可以按变量名称查找坐标,将您的函数应用于它,然后使用您的函数生成的新坐标集查找下一个变量。

您可以将函数应用到的数字元组与可用作 dict 中的键的字符串之间的映射很容易。

于 2012-05-06T12:16:13.450 回答