2014-05-17 42 views
1

我將如何去尋找使用列表理解在Python中找到2D列表中的所有鄰居?我可以找到所有相鄰的對角線,但我不想包含對角線。創建一個列表理解,以找到2D列表中的正交鄰居

舉例來說,如果我有一個二維列表,這樣

2 3 5 
1 6 None 
2 4 8 

和我目前的電池爲六在電網[1] [1],如何創建網格單元的鄰居列表理解[1] [1]如果這些單元格是!=無(即值1,3和4,但我需要單元格引用,而不是數字)。

感謝您的任何幫助。

回答

0

怎麼樣簡單,因爲:

  • MAXX與美星是最大細胞尺寸)
  • 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 ] 
+0

是的,它不接受他們。它被假設爲由最大值代替(這就是爲什麼我寫「給定MAXx和MAXy **是**最大單元尺寸) – lejlot

+0

我把它封裝在函數中只是爲了更容易分離參數(所以很清楚哪個部分是哪些)給出,OP要求列表理解解決方案,而不是功能或任何更復雜的結構。但你是對的,它可能會迷惑某人,我刪除功能結構 – lejlot

+0

真棒,這正是我之後。我需要它來解決另一個動態編程問題,通過遍歷一個矩陣來刪除你看不到的一半,以便找到可以「抓取」的最大數量的項目。很難解釋,部分數學遊戲的東西,我有邏輯背後的邏輯,但被困在這一部分。 –

相關問題