寻找相邻的 - 但不是对角相邻的 - 元组,表示n维网格中点的相邻点,其中n变化。我有一个带有n个值的元组,零索引并且每个值都是特定维度中的点的位置。我还有另一个表示数组形状的n维元组。
答案 0 :(得分:0)
我不确定我是否理解你的问题,特别是因为它没有代码可以澄清事情 - 尽管如此,这是一个猜测。它将相邻的非对角点定义为与目标元组的距离平方恰好为1的对角点。
我只测试了一些二维非任意元组 - 每个元组代表中间一个的8个可能点之一 - 以便可以轻松检查结果。无论如何,当使用由任意值组成的元组扩展到更高维度时,它似乎也会起作用。
dim = 2
target = (1, 1)
tuples = [(0, 0), (1, 0), (2, 0),
(0, 1), (1, 1), (2, 1),
(0, 2), (1, 2), (2, 2)]
adjacents = []
for tuple_ in tuples:
if sum((target[k]-tuple_[k])**2 for k in range(dim)) == 1: # Non-diagonal?
adjacents.append(tuple_)
print(adjacents) # -> [(1, 0), (0, 1), (2, 1), (1, 2)]
如果我的理解是正确的并且这是正确的,那么它可以被重写并转换为“一行”列表理解。