我有一个清单,比如
[[1, 2, 3,],[4, 5, 6,],[7, 8, 9]]
。
图形表示为:
1 2 3
4 5 6
7 8 9
我正在寻找一种优雅的方法来检查一个单元的邻域的值,水平的,垂直的和对角的。例如,[0][2]的邻居是[0][1]、[1][1]和[1][2]或数字2、5、6。
现在我意识到我可以做一次暴力攻击来检查每一个la值:
[i-1][j]
[i][j-1]
[i-1][j-1]
[i+1][j]
[i][j+1]
[i+1][j+1]
[i+1][j-1]
[i-1][j+1]
但这很简单,我想我可以通过看到一些更优雅的方法来学习更多。
mb。。。
假设你有一个方阵:
使用^{} 并感谢Python的yield expression和star operator,该函数很漂亮dry,但仍然足够可读。
如果矩阵大小为3,则可以(如果需要)收集
list
中的邻居:函数的功能可以可视化如下:
我不知道这是否被认为是干净的,但是这一行程序通过迭代它们并丢弃任何边的情况来给所有的邻居。
相关问题 更多 >
编程相关推荐