以下代码给出了错误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的值?在这里,我只是想追加我。
答案 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)
hosts
是int
,因此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])
?我对这个问题不是很清楚。