使用yield关键字返回生成器的反向

时间:2015-11-30 18:50:54

标签: python

我有功能,我必须反转列表。 是否有可能重写此函数以使用yield返回生成器?没有在列表中存储增量?

def back_propogation(self,activations,output):
    error = output - activations[-1]
    deltas = [error * math_utils.sigmoid_prime(activations[-1])]
    for l in range(len(activations) - 2, 0, -1): 
        deltas.append(deltas[-1].dot(self.weights[l].T)*self.some_function(activations[l]))
    deltas.reverse()
    return deltas

2 个答案:

答案 0 :(得分:0)

您只需yield出现反向列表中的项目:

for item in reversed(deltas):
    yield item

答案 1 :(得分:0)

for i in xrange(len(deltas) - 1, -1, -1):
    yield deltas[i]

这至少可以节省你对列表的反转。