加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读