当前位置: 代码迷 >> python >> 如何提前结束循环一次迭代?
  详细解决方案

如何提前结束循环一次迭代?

热度:64   发布时间:2023-06-13 14:17:38.0

我经常需要更早结束循环一次,我该如何优雅地完成呢? 对我来说很混乱。 现在,我使用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])

您也可以使用break

for i in range(1,100):
  if i==10:
    break

一旦条件匹配,将杀死循环。

一种通用的解决方案是从迭代器创建一个生成器(它将生成除迭代器生成的最后一个元素以外的所有元素):

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)

我建议您使用__iter__方法将您的神经元对象实现为类,以根据您喜欢的行为使对象可迭代:

class MyClass(object):
    def __iter__(self):
        yield 2
        yield 5
        yield 10


obj = MyClass()

for i in obj:
    print i
  相关解决方案