-2
这是我的代码:蟒:对于i在范围麻烦
for i in range(self.inputCount, len(self.neurons)):
currNode=self.neurons[i]
for k in range(len(currNode.inNeuron)):
print 'len(currNode.inNeuron) =', len(currNode.inNeuron)
print 'range(len(currNode.inNeuron)) =', range(len(currNode.inNeuron))
print 'k =', k
if currNode.inNeuron[k] == editNode:
currNode.inNeuron.pop(k)
出于某种原因,每当运行此和len(currNode.inNeuron)是1,并且范围为[0],k是1。我在这种情况下,只需要k为零。这里是打印输出的样本
range(len(currNode.inNeuron)) = [0]
k = 0
len(currNode.inNeuron) = 1
range(len(currNode.inNeuron)) = [0]
k = 0
len(currNode.inNeuron) = 2
range(len(currNode.inNeuron)) = [0, 1]
k = 0
len(currNode.inNeuron) = 1
range(len(currNode.inNeuron)) = [0]
k = 1
Traceback (most recent call last):
File "neuralnet.py", line 99, in <module>
if __name__=="__main__":main()
File "neuralnet.py", line 95, in main
net1.randomizeNet(5)
File "neuralnet.py", line 84, in randomizeNet
self.eraseNode()
File "neuralnet.py", line 52, in eraseNode
if currNode.inNeuron[k] == editNode:
有关如何解决此问题的任何想法?
*叹*,什么是错误? –
不会更改'for'中使用的元素 - 您从'currNode.inNeuron.pop(k)'中获取元素,但是对于范围内的k(len(currNode.inNeuron))''不知道它。 – furas
你的循环在范围内使用'k(len(currNode.inNeuron)):'。范围函数'len(currNode.inNeuron)'的参数在循环开始时计算。因此,当'currNode.inNeuron'中有2个项目时,即使在循环中更改'currNode.inNeuron'中的项目,循环也会运行两次。 –