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后面的参数,一个有括号,一个没括号,说明什么问题 展开
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后面的参数,一个有括号,一个没括号,说明什么问题 展开
1个回答
展开全部
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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询