python中int对象不可迭代,TypeError:没有迭代时,'int'对象不可迭代吗?

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)

6e3c90d4565e80e6c100efe254fb4c9c.png

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

解决方案

i, j = 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值