TypeError: объект 'int' не является итеративным, пока не существует итераций? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать BFS, пока Python выдает мне объект int, а не повторяющуюся ошибку.

Часть кода:

visited, queue = set(), collections.deque( ((0, 0), [ (0, 0) ] ) ) 
# tuple: current location,  path
while queue: 
    vertex = queue.popleft()
    i,j=vertex[0]
    if i+1<=dim-1 and (i+1, j) not in visited and X[i+1, j]==0:
        visited.add(( i+1, j) )
        temp=( (i+1, j), vertex[1]+[(i+1, j)])
        if temp[0]==(dim-1, dim-1):
            return True, temp[1]
        queue.append(temp)

enter image description here

Под циклом while я делаю любую другую итерацию!

1 Ответ

0 голосов
/ 06 февраля 2019

i, j = <expression> подразумевает, что является итеративным и имеет ровно два элемента.В то время как в вашем случае выражение (вершина [0]) дает целое число, которое не может быть повторено.

Утверждение: i, j = vertex[0] примерно эквивалентно:

iterator = iter(vertex[0])
i = next(iterator) # this is iteration, but outside of a loop
j = next(iterator)
try:
    next(iterator)
except StopIteration:
    pass
else:
    raise ValueError

Ваш коддолжно быть либо

i = vertex[0]
j = vertex[1]

, либо

i, j = vertex
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...