踩坑之python2和python3下的map和zip

python踩坑记

map和zip

今天在跑感知器[1]Demo的时候
老报错:lambda() missing 1 required positional argument: ‘w’
从菜鸟教程里可以搜到Python中map函数[2]的用法,特别提到map函数在python2和python3中的区别
截图自菜鸟教程
以及zip函数[3]的用法
截图自菜鸟教程
笔者的Python是3.6.5,因此需要手动将map函数返回的迭代器转为list以及将zip函数返回的对象转为list。
涉及到的代码如下:

// 第一部分
return self.activator(
	reduce(lambda a, b: a + b,
		list(map(lambda x, w: x * w,
        	list(zip(input_vec, self.weights))))) + self.bias)
// 第二部分
self.weights = list(map(
	lambda x, w: w + rate * delta * x,
		list(zip(input_vec, self.weights))))

转为list之后,发现还是报错,后来搜了一下得到两位好心人的完美答案[4]
lambda表达式以元组作为参数,在python2和python3中写法是有区别的:
python2:
lambda (x, w) : x * w
python3
lambda x : x[0] * x[1]
因此,最终的代码改为:

// 第一部分
return self.activator(
	reduce(lambda a, b: a + b,
		list(map(lambda x: x[0] * x[1],
        	list(zip(input_vec, self.weights))))) + self.bias)
// 第二部分
self.weights = list(map(
	lambda x: x[1] + rate * delta * x[0],
		list(zip(input_vec, self.weights))))

然后就成功运行啦!
在这里插入图片描述
[1]:https://www.zybuluo.com/hanbingtao/note/433855
[2]:https://www.runoob.com/python/python-func-map.html
[3]:https://www.runoob.com/python/python-func-zip.html
[4]:https://zhidao.baidu.com/question/749852507853975452.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值