TypeError: 'int' object is not iterable while no iteration exists?

◇◆丶佛笑我妖孽 提交于 2019-12-11 17:24:11

问题


I am trying to do a BFS while Python gives me an int object not iterable error.

Part of the code is

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)

Under the while loop, I am doing any other iteration at all!


回答1:


i, j = <expression> implies that is iterable and has exactly two elements. Whereas in your case, the expression (vertex[0]) yields an integer, which is not iterable.

The statement: i, j = vertex[0] is roughly equivalent to:

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

Your code should either be

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

or

i, j = vertex


来源:https://stackoverflow.com/questions/54556930/typeerror-int-object-is-not-iterable-while-no-iteration-exists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!