我有以下矩阵:
W = [['a', 'b', 'b', 'b', 'a'],
['a', 'a', 'a', 'a', 'b'],
['a', 'b', 'a', 'b', 'b'],
['a', 'a', 'a', 'b', 'b'],
['b', 'b', 'b', 'b', 'b'],
['b', 'b', 'b', 'b', 'b']]
如果我从矩阵中选择 W[x][y],我如何计算该特定点周围的 a 字符?例如,假设我选择 W[4][1],即 b。我可以看到那个点周围有三个a。但是我如何通过编码来确定它呢?我最终得到了非常混乱的代码,并意识到如果我们改变矩阵的维度,它就不会起作用。问题还在于,如果我选择靠近回合的点,W[y-1][(x):(x+1)].count("a")
那么这种想法就行不通了。
再次,我们将不胜感激!谢谢!
更新:
W = [['K', ' ', ' ', ' ', ' '],
['K', 'K', 'K', 'K', ' '],
['K', ' ', 'K', ' ', ' '],
['K', 'K', 'K', ' ', ' '],
[' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ']]
def count_matrix(W, y, x, ch="K"):
ref = (-1, 0, 1)
occ = []
a = "K"
b = " "
for dy, dx in [(a, b) for a in ref for b in ref if (a,b)!=(0, 0)]:
if (x+dx) >= 0 and (y+dy) >= 0:
try:
occ.append(W[x+dx][y+dy])
except IndexError:
pass
return occ.count(ch)
print count_matrix(W,0,0)
这返回0
。