我有一个 Python 中的二维列表。给定一个索引,我想找到该索引的所有邻居。因此,如果我的列表是 3x3
然后给定索引 (1, 1)
我想返回 [(0, 1), (1, 0), ( 2, 1), (1, 2), (2, 2), (0, 0), (0, 2), (2, 0)]
但如果索引是 (0, 0)
那么我只想返回 [(0, 1), (1,0), (1, 1)]
。我知道如何用丑陋的 if 语句来做到这一点。我的问题是,是否有一个漂亮的Pythonic magic one liner可以做到这一点?
最佳答案
例如,具有列表推导式的 3x3 空间的恒定时间解决方案:
valid={(x,y) for x in range(3) for y in range (3)}
dirs=[(dx,dy) for dx in (-1,0,1) for dy in (-1,0,1) if (dx,dy)!=(0,0)]
def voisins(x,y): return [(x+dx,y+dy) for (dx,dy) in dirs if (x+dx,y+dy) in valid]
关于python - 在二维数组中查找有效的邻居索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912408/