一个解析文件的小工具,使用了lambda 表达式,在python2.x升级到python3.x 的时候报错了,报错提示也没有什么有效信息,解决之后记录一下c++lambda表达式,为了避免版权等信息,使用一个示例说明。
python2.x 代码:
from functools import reduce
a = [1,2,3,4]
b=0
acc=1
b = reduce((lambda acc,(i,x): acc + (i+1)*x),enumerate(a),b)
print(b)
使用python3 运行python2.x 的代码时报错如下:
b = reduce((lambda acc,(i,x): acc + (i+1)*x),enumerate(a),b)
^
SyntaxError: invalid syntax
也就是说(i,x) 这个位置有符号错误,但是没看出来什么错误。
看vscode 的提示:
Sublist parameters are not supported in Python 3.x Pylance
就是说python3.x 不支持用子列表作为参数。
在网上查了下,可以把子列表看作一个元组c++lambda表达式,用元组作参数,不使用子列表的形式。
修改后的python3.x 代码:
from functools import reduce
a = [1,2,3,4]
b=0
acc=1
b = reduce((lambda acc,i: acc + (i[0]+1)*i[1]),enumerate(a),b)
print(b)
改过之后运行成功。
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。