Python TypeError:'int'对象不可迭代

时间:2013-09-03 15:09:09

标签: python

以下代码给出了错误Python

TypeError: 'int' object is not iterable:

代码:

hosts = 2
AppendMat = []
Mat = np.zeros((hosts,hosts))
Mat[1][0] = 5
for i in hosts:
    for j in hosts:
        if Mat[i][j]>0 and Timer[i][j]>=5:
            AppendMat.append(i)

我该如何解决错误 -

TypeError: 'int' object is not iterable?

其次,如果if条件为真,我怎样才能追加i和j的值?在这里,我只是想追加我。

6 个答案:

答案 0 :(得分:3)

您需要根据hosts而不是hosts本身迭代范围:

for i in range(hosts):      # Numbers 0 through hosts-1
    for j in range(hosts):  # Numbers 0 through hosts-1

您可以将这两个数字附加为元组:

 AppendMat.append((i,j))

或者只是单独附加

AppendMat.extend([i,j])

取决于您的需求。

答案 1 :(得分:2)

试试这个:

for i in xrange(hosts):

答案 2 :(得分:1)

hostsint,因此for i in hosts无效,因为错误解释了。也许你的意思是

for i in range(hosts):

第二个for循环也是如此。

(参见range();在Python 2.x中使用xrange()


顺便说一下,整个事情可以是一个list comprehension

AppendMat = [i for i in range(hosts) 
                   for j in range(hosts) 
                       if Mat[i][j]>0 and Timer[i][j]>=5]

答案 3 :(得分:1)

你不能迭代整数(hosts):

>>> for i in 2:
...     print(i)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

您应该使用range(n)来迭代n次:

>>> for i in range(2):
...     print(i)
...
0
1

答案 4 :(得分:1)

可能你的意思是范围(2)而不是hosts

答案 5 :(得分:1)

for语句适用于Python概念“iterable”,如list,tuple等.int不是可迭代的。

所以你应该使用range()xrange(),它们接收一个int并生成一个iterable。

第二,你的意思是追加一个元组:append((i,j))或列表:append([i,j])?我对这个问题不是很清楚。