python2.7中的一个代码在python3.5中运行不了,要如何改 10

self.activator(reduce(lambdaa,b:a+b,map(lambda(x,w):x*w,zip(input_vec,self.weights)),... self.activator(
reduce(lambda a, b: a + b,
map(lambda (x, w): x * w,
zip(input_vec, self.weights))
, 0.0) + self.bias)
其中:from functools import reduce已经引入
activator是我定义的激励函数,就是activator()里的这一段要如何修改,才能在3.5中运行。在2.7中尝试运行,无误!
还有一个问题,在上述的代码中,lambda后面的参数,一个有括号,一个没括号,说明什么问题
展开
 我来答
我心我在
2016-12-07 · TA获得超过2157个赞
知道小有建树答主
回答量:784
采纳率:77%
帮助的人:627万
展开全部
zip(input_vec, self.weights)假设这里出来的数据结构是 [(1, 4), (2, 5), (3, 6)]
那么lambda (x, w): x * w 在2.7版本就直接接收 元祖(1, 4)这样子的数据类型当做一个参数,
(x,w)=依次=>(1, 4), (2, 5), (3, 6),
但是这个写法在3.5的时候 ,狗日的不认识map(lambda (x, w)。。。x[0] * x[1]
替代方式我没去研究 在3.5的时候 我是直接把 x=(1, 4)。。用的时候x[0] * x[1]
(reduce(lambda a, b: a + b,
                   map(lambda x: x[0] * x[1],  
                       zip(input_vec, weights))
                , 0.0))
追问
最后那个0.0在什么时候会用到?
追答
reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:
   reduce(f, [1, 3, 5, 7, 9], 100)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式