自高中以来没有使用过笛卡尔图,我实际上发现它们需要与现实生活相关。这可能是一个奇怪的需要,但我必须将数据分配到笛卡尔图上的点,这可以通过调用笛卡尔坐标来访问。图表上需要有无限点。对于例如。
^
[-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。
理论上,假设我有一个python变量==(“0-1”),我相信我需要将它拆分为 - ,这将留下x = 0,y = 1。然后,我需要执行(int(y)+1),然后将x重新附加到y,中间带有“ - ”。
我想要做的是调用带有参数(x + 1,y + 0)的函数,并让程序执行上述操作,然后返回它计算出的笛卡尔坐标。
我实际上不需要检索空间的值,只需要检索笛卡尔坐标。我想我可以使用re.sub(),但是我不知道如何正确地格式化这个函数来分割' - ',我也不确定如何正确地执行计算。
我该怎么做?
答案 0 :(得分:2)
要表示无限格,请使用将元组(x,y)映射到值的字典。
grid[(0,0)] = m
grid[(0,1)] = l
print(grid[(0,0)])
答案 1 :(得分: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('-')]
答案 2 :(得分:0)
您想要在变量名称和坐标之间创建双向映射,然后您可以按变量名称查找坐标,将函数应用于它,然后使用函数生成的新坐标集找到下一个变量。
您可以将函数应用到的数字元组之间的映射,以及可用作dict中的键的字符串,以及后面的字符串很容易。