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']]
[X] [Y] 매트릭스에서, 어떻게 그 spesific 포인트 주위에-문자를 셀 수 W 내가 선택하는 경우? 예를 들어 내가 W [4] [1]을 선택한다고 가정 해 봅시다. 그 지점 주변에는 3 개의 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