我正在尝试做一个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)
在while循环中,我完全在进行其他任何迭代!
答案 0 :(得分:1)
i, j = <expression>
表示这是可迭代的,并且有两个元素。而在您的情况下,表达式(vertex [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