python – TypeError:Reduce()没有初始值的空序列
发布时间:2020-12-20 12:31:48 所属栏目:Python 来源:网络整理
导读:我正在尝试编写一个函数,它将为我提供一个元组,其0索引是该文件中的行数,其1索引是该文件中的字符数.到目前为止,我有一个元组列表,如下所示: mapped = [(1,50),(1,11),58)] 我想写的这句话是这样的: reduce(lambda x:(x[0]+y[0],x[1]+y[1]),(i for i in ma
我正在尝试编写一个函数,它将为我提供一个元组,其0索引是该文件中的行数,其1索引是该文件中的字符数.到目前为止,我有一个元组列表,如下所示:
mapped = [(1,50),(1,11),58)] 我想写的这句话是这样的: reduce(lambda x:(x[0]+y[0],x[1]+y[1]),(i for i in mapped)) 如果它正常工作,那么它应该返回(3,119)的元组.但是,我收到了错误 TypeError: reduce() of empty sequence with no initial value 任何人都可以弄清楚为什么会这样吗? 解决方法
使用这种方式:
>>> reduce(lambda x,y:(x[0]+y[0],[i for i in mapped]) (3,119) >>> reduce(lambda x,(i for i in mapped)) (3,119) 你错过的是lambda应该有两个参数,你只需要一个. 对于Python3.x,请参阅以下代码: >>> from functools import reduce >>> reduce(lambda x:(x[0]+y[0],(i for i in mapped)) Traceback (most recent call last): File "<stdin>",line 1,in <module> TypeError: <lambda>() takes exactly 1 positional argument (2 given) >>> reduce(lambda x,119) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |