我看到了这样的代码:
for i in val[0]:
int(i)
count += 1
其中val是任何已定义的列表。 for循环在这里迭代了什么。假设val [0]为5,那么循环会持续5次吗?
答案 0 :(得分:4)
如果val[0]
为5
,您将收到错误消息:
>>> for i in 5:
TypeError: 'int' object is not iterable
该代码仅在val[0]
可迭代
>>> # here val[0] = [1,2,3], which is an iterable list.
>>> val = [[1, 2, 3], [4, 5], [6], 7]
>>> for i in val[0]:
>>> print i
1
2
3
This对可迭代的内容有一个很好的解释。实质上,您可以通过检查__iter__
方法来检查可迭代性:
>>> hasattr([1,2,3,4], '__iter__')
True
>>> hasattr(5, '__iter__')
False
字符串也可以在for
循环中用于迭代字符,但由于某种原因,它们使用__getitem__
代替__iter__
:
>>> hasattr([u"hello", '__iter__')
False
>>> hasattr([u"hello", '__getitem__')
True
答案 1 :(得分:0)
在python中(以及我能想到的任何其他内容)
for i in 5:
int(i)
count +=1
将抛出错误,特别是在Python 2.7中你得到
TypeError:'int'对象不可迭代
是val
个迭代本身的条目吗?例如,val[0]=[0,1,2,3,4]
。在这种情况下,上面的代码将起作用(假设您已在某处初始化变量count
)。