-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'中的項目,循環也會運行兩次。 –