TypeError:'int'对象在没有迭代存在时不可迭代吗?

时间:2019-02-06 15:20:29

标签: python python-3.x list set

我正在尝试做一个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 :(得分: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