2024-10-16 20:50:15 发布
网友
代码在这里
return self.activator(reduce(lambda a, b: a+b, map(lambda x, w: x*w, zip(input_vec, self.weights)), 0.0) + self.bias)
python2.7版本的代码类似于lambda (x, w)
lambda (x, w)
但是现在元组参数解包被移除了 所以我不知道该怎么想
制作一个小的运行示例来说明问题是一件好事。在你的例子中,这不是事实,因为我们缺少一些变量。就像我在另一条评论中说的,你映射的列表是由元组组成的。正如您已经知道的,您不能再解包元组,但是您可以像在数组中一样使用索引。一个简单的工作示例:
val = reduce(lambda a, b: a+b, map(lambda t: t[0]*t[1], zip([10, 20, 30], [0.1, 0.3, 0.7])), 0.0) print(val)
如您所见,传递给map函数的lambda函数现在只有一个参数。我叫它t是为了说明这是一个元组,如果你想的话可以叫它x。在函数体中,我使用索引来获取元组的第一个和第二个元素。如果你运行这段代码,你会发现它是有效的。所以下一步就是把它应用到你的代码中:
return self.activator(reduce(lambda a, b: a+b, map(lambda t: t[0]*t[1], zip(input_vec, self.weights)), 0.0) + self.bias)
这应该能达到目的。
你不能再打开行李了。但是,您可以直接接受tuple,并在公式中使用索引:
map(lambda t: t[0]*t[1], zip(input_vec, self.weights))
将map与lambda一起使用兴趣不大,生成器理解等价:
map
lambda
(x*w for x,w in zip(input_vec, self.weights))
(和拆包工程)
同样的构造需要对外部的lambda甚至reduce重复,这可以通过执行元素和的sum完全消除:
reduce
sum
return self.activator(sum(x*w for x,w in zip(input_vec, self.weights)) + self.bias)
没有更多的羔羊,更短更清晰
制作一个小的运行示例来说明问题是一件好事。在你的例子中,这不是事实,因为我们缺少一些变量。就像我在另一条评论中说的,你映射的列表是由元组组成的。正如您已经知道的,您不能再解包元组,但是您可以像在数组中一样使用索引。一个简单的工作示例:
如您所见,传递给map函数的lambda函数现在只有一个参数。我叫它t是为了说明这是一个元组,如果你想的话可以叫它x。在函数体中,我使用索引来获取元组的第一个和第二个元素。如果你运行这段代码,你会发现它是有效的。所以下一步就是把它应用到你的代码中:
这应该能达到目的。
你不能再打开行李了。但是,您可以直接接受tuple,并在公式中使用索引:
将
map
与lambda
一起使用兴趣不大,生成器理解等价:(和拆包工程)
同样的构造需要对外部的
lambda
甚至reduce
重复,这可以通过执行元素和的sum
完全消除:没有更多的羔羊,更短更清晰
相关问题 更多 >
编程相关推荐