整数对象不可迭代
我遇到了一个问题,不知道怎么解决,涉及到Dijkstra算法——这是我的代码:
infinity = 1000000
invalid_node = -1
#startNode = 0
class Node:
distFromSource = infinity
previous = invalid_node
visited = False
def populateNodeTable():
nodeTable = []
f = open("twoDArray.txt", "r")
for line in f.readlines(): #get number of nodes from file
nodeTable.append(line.split(',')) # Create matrix of weights
numNodes = len(nodeTable) # Count nodes
print numNodes
#for all nodes in text file, set visited to false, distFromSource to infinity & predecessor to none
**for i in numNodes:
nodeTable.append(Node(i))**
#nodeTable.append(Node())
nodeTable[startNode].distFromSource = 0
print nodeTable
if __name__ == "__main__":
populateArray()
populateNodeTable()
当我运行这段代码时,出现了以下错误:
Traceback (most recent call last):
File "2dArray.py", line 63, in <module>
populateNodeTable()
File "2dArray.py", line 18, in populateNodeTable
for i in numNodes:
TypeError: 'int' object is not iterable
我不太确定怎么修复这个错误(星号之间的部分)——我想做的是读取我的文本文件,里面只是一些用逗号分隔的整数,然后计算这个文本文件中的节点数量。每个节点将会被赋值到Node类中。
3 个回答
0
如果你想要遍历元素的索引,可以使用 for i, _ in enumerate(nodeTable)
这个写法。
如果你还想访问到元素本身,就把 _
替换成一个真实的名字,而不是用下划线。
0
你可以试试 for i in range(numNodes)
这个写法……这里的 numNodes 只是一个数字,而不是你想要的数字数组。
2
试试这个:
for i in nodeTable:
你为什么要对 numNodes
进行循环呢?你在上面一行已经定义了它是表的长度。
但是在循环中往同一个表里添加东西是没有意义的。而且这和读取文件的代码也不兼容。此外,Node类根本无法使用……