这是一个 7x7 矩阵:
11 21 31 41 51 61 71
12 22 32 42 52 62 72
13 23 33 43 53 63 73
14 24 34 44 54 64 74
15 25 35 45 55 65 75
16 26 36 46 56 66 76
17 27 37 47 57 67 77
数字 11, 21, 33 ... 是位置的值。 如果给定半径,行数和列数,如何找到邻居?
例如,函数 neighbors(radius = 1, rowNumber = 3, columnNumber = 3) 应该返回一个矩阵:
22 32 42
23 33 43
24 34 44
函数 neighbors(radius = 2, rowNumber = 3, columnNumber = 3) 应该返回一个矩阵:
11 21 31 41 51
12 22 32 42 52
13 23 33 43 53
14 24 34 44 54
15 25 35 45 55
当邻居超出边界时,其值应为0。 例如,函数 neighbors(radius = 2, rowNumber = 1, columnNumber = 1) 应该返回一个矩阵
0 0 0 0 0
0 0 0 0 0
0 0 11 21 31
0 0 12 22 32
0 0 13 23 33
我已经为这个问题思考了 3 天,但我仍然无法为它制定解决方案。
请您参考如下方法:
这在其他语言中可能很难,但在 Python 中这很容易。这是一个可以完成您所要求的功能:
def neighbors(radius, row_number, column_number):
return [[a[i][j] if i >= 0 and i < len(a) and j >= 0 and j < len(a[0]) else 0
for j in range(column_number-1-radius, column_number+radius)]
for i in range(row_number-1-radius, row_number+radius)]
这是一个二维列表:
a = [[ 11, 21, 31, 41, 51, 61, 71],
[ 12, 22, 32, 42, 52, 62, 72],
[ 13, 23, 33, 43, 53, 63, 73],
[ 14, 24, 34, 44, 54, 64, 74],
[ 15, 25, 35, 45, 55, 65, 75],
[ 16, 26, 36, 46, 56, 66, 76],
[ 17, 27, 37, 47, 57, 67, 77]]
参见 List comprehensions .
更新了解决方案中缺少的“和” - 请查看
