Как проверить соседние элементы в 2d списке
У меня есть следующий 2d-список, для которого я создал следующую функцию, которая смотрит на 2 1 и проверяет, является ли он смежным, чтобы он был смежным, он должен иметь 9 между ними
[0, 0, 0, 0, 0] [1, 9, 1, 9, 1] [0, 0, 9, 0, 0] [0, 0, 1, 0, 0] [0, 0, 9, 0, 0] [0, 0, 1, 0, 0] [0, 0, 0, 0, 0]
Я создаю два списка из сетки
lst = [] for rows, row in enumerate(grid): for cols, col in enumerate(row): if grid[rows][cols] in [1]: lst.append((rows, cols)) bondlst = [] for rows, row in enumerate(grid): for cols, col in enumerate(row): if grid[rows][cols] in [9]: bondlst.append((rows, cols)) print(lst) print(bondlst)
def adjacentnode(nodea ,nodeb): if nodea[0] == nodeb[0] and nodea[1] == nodeb[1]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[0] == nodeb[0] and nodea[1] == nodeb[1]-2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]-2 and nodea[1]-1 ==9: adjacent = True else: adjacent = False return adjacent tempgraph = {} for node in range(len(lst)): adjacencylist.append((lst[node] ,[])) for neighbour in range(len(lst)): adjacentnodes = (adjacentnode(lst[node] ,lst[neighbour])) print(adjacentnodes) if adjacentnodes == True: adjacencylist[node][1].append(lst[neighbour])Но на каждый мой звонок он возвращает ложь и я не могу понять почему
def adjacentnode(nodea ,nodeb): if nodea[0] == nodeb[0] and nodea[1] == nodeb[1]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[0] == nodeb[0] and nodea[1] == nodeb[1]-2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]-2 and nodea[1]-1 ==9: adjacent = True else: adjacent = False return adjacent tempgraph = {} for node in range(len(lst)): adjacencylist.append((lst[node] ,[])) for neighbour in range(len(lst)): adjacentnodes = (adjacentnode(lst[node] ,lst[neighbour])) print(adjacentnodes) if adjacentnodes == True: adjacencylist[node][1].append(lst[neighbour])Но на каждый мой звонок он возвращает ложь и я не могу понять почему
Что я уже пробовал:
спасибо, вот как далеко я зашел
def adjacentnode(nodea ,nodeb): if nodea[0] == nodeb[0] and nodea[1] == nodeb[1]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[0] == nodeb[0] and nodea[1] == nodeb[1]-2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]+2 and nodea[1]-1 ==9: adjacent = True elif nodea[1] == nodeb[1] and nodea[0] == nodeb[0]-2 and nodea[1]-1 ==9: adjacent = True else: adjacent = False return adjacent
Richard MacCutchan
Глядя на ваш код и значения в массивах, я не могу понять, как он может когда-либо возвращать true. Вы не объяснили, что такое nodea и nodeb, или почему вы добавляете или вычитаете значения, которые никогда не могут равняться числам, которые вы тестируете.