问题描述
我经常需要更早结束循环一次,我该如何优雅地完成呢? 对我来说很混乱。 现在,我使用return来解决它,但是稍后我想创建一个类时,在构造函数中间使用return会失去意义。
def forward(neurons):
for layerId, layer in enumerate(neurons):
if layerId == neurons.__len__() - 1:
return
for idx, i in enumerate(neurons[layerId]):
for idx2, n in enumerate(neurons[layerId+1]):
neurons[layerId+1][idx2] += i * sigmoid(weights[layerId][idx][idx2])
1楼
您也可以使用break
:
for i in range(1,100):
if i==10:
break
一旦条件匹配,将杀死循环。
2楼
一种通用的解决方案是从迭代器创建一个生成器(它将生成除迭代器生成的最后一个元素以外的所有元素):
def but_last(p):
first = True
for x in p:
if not first:
yield last
first = False
last = x
for layerId, layer in but_last(enumerate(neurons)):
do_your_stuff(layerId, layer)
3楼
我建议您使用__iter__
方法将您的神经元对象实现为类,以根据您喜欢的行为使对象可迭代:
class MyClass(object):
def __iter__(self):
yield 2
yield 5
yield 10
obj = MyClass()
for i in obj:
print i