Python 中lambda和zip组合使用报错
发布网友
发布时间:2022-04-21 19:15
我来回答
共5个回答
热心网友
时间:2022-04-18 16:19
我是网上copy别个感知器代码,我是py3.6也出现了这个问题。PY2和py3在map和zip的地方有区别,py3的结果是迭代器,所以需要自己手动将结果转化为列表。因此只是光改代码提示错误的地方还不够,出现map和zip的地方都需要修改。更改主要两处代码:1.self.activator(rece(lambda a,b: a + b,list(map(lambda x: x[0] * x[1], list(zip(input_vec, self.weights)))))+self.bias) 2:
def _update_weights(self, input_vec, output, label, rate):
delta = label - output
self.weights = list(map(
lambda x: x[1] + rate * delta * x[0],
list(zip(input_vec, self.weights))))
# 更新bias
self.bias += rate * delta
热心网友
时间:2022-04-18 17:37
lambda表达式以元组作为参数,在python2和python3中写法是有区别的:
# python2
lambda (x, w) : x * w
#python3
lambda x_w : x_w[0] * x_w[1]
不知道帮到你了没
热心网友
时间:2022-04-18 19:11
直接用列表解析会好一点
wenjie@digi007:~/work/multiDB$ python3.6
Python 3.6.1 (default, Mar 22 2017, 06:17:05)
[GCC 6.3.0 20170321] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> input_vec=[1,1]
>>> weights=[0.0,0.0]
>>> L = [i*j for i,j in zip(input_vec, weights)]
>>> print(L)
[0.0, 0.0]
>>> print(list(map(lambda x: x[0]*x[1], zip(input_vec, weights))))
[0.0, 0.0]
热心网友
时间:2022-04-18 21:03
#去掉zip
input_vec=[1,1]
weights=[0.0,0.0]
print(list(map(lambda x,w: x * w,input_vec, weights)))
热心网友
时间:2022-04-18 23:11
return self.activator(rece(lambda a,b: a+b,list(map(lambda x: x[0]*x[1], zip(input_vec, self.weights))),0.0)+self.bias)