使用for循环迭代列表

时间:2013-12-07 05:39:55

标签: python-2.7 for-loop

我看到了这样的代码:

for i in val[0]:                  
    int(i)
    count += 1

其中val是任何已定义的列表。 for循环在这里迭代了什么。假设val [0]为5,那么循环会持续5次吗?

2 个答案:

答案 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)。