我有以下矩陣:Python和矩陣
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]從矩陣,我怎麼能指望周圍的spesific點字符?例如,假設我選擇W [4] [1],即b。我可以看到那邊有三個a。但是,我怎樣才能通過編碼來確定它呢?我最終弄亂了代碼的和平,並且意識到如果我們改變矩陣的維度,它就無法工作。問題在於,如果我選擇接近輪的點,W[y-1][(x):(x+1)].count("a")
- 思維的種類不起作用。
再次,幫助將不勝感激!謝謝!
UPDATE:
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
。
排字錯誤:'ref =(-1,0,-1)' – alko
現在就像一個魅力!感謝@alko和@drewk! – Waldema
您對'a ='K''和'b =「」'的分配並沒有達到您的想法。列表理解中的'a'和'b'只是名稱空間範圍限於理解的臨時變量。將a和b設置爲理解之外的其他值不會改變任何內容。 – dawg