创建列表推导以在2D列表中查找正交邻居

时间:2014-05-17 06:53:08

标签: python list

如何使用列表推导在Python中的2D列表中查找单元格的所有邻居?我可以找到所有相邻的包括对角线,但我不想包括对角线。

例如,如果我有这样的2D列表

2   3   5
1   6   None
2   4   8

我的当前单元格在网格[1] [1]处为6,如果这些单元格为!=无(即值1),如何创建网格单元[1] [1]的邻居的列表解析,3和4,但我需要单元格引用,而不是数字)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果简单,那就是:

  • MAXx和MAXy是最大单元尺寸)
  • a,b是您单元格的坐标
  • X是你的细胞

然后你的列表理解是

[(i,j) for i,j in ((a-1,b), (a+1,b), (a,b-1), (a,b+1)) if 0<=i<MAXX and 0<=j<MAXy and X[i][j] is not None ]