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

用Python求和非整数([[1],[2]])= [1,2]

发布时间:2020-12-20 13:05:00 所属栏目:Python 来源:网络整理
导读:是否可以在 python中获取非整数的总和? 命令 sum([[1],[2]]) 例如,给出错误 Traceback (most recent call last): File "pyshell#28",line 1,in module sum([[1,2,3],[2,3,4]])TypeError: unsupported operand type(s) for +: 'int' and 'list' 我怀疑sum会
是否可以在 python中获取非整数的总和?

命令

sum([[1],[2]])

例如,给出错误

Traceback (most recent call last):
  File "<pyshell#28>",line 1,in <module>
    sum([[1,2,3],[2,3,4]])
TypeError: unsupported operand type(s) for +: 'int' and 'list'

我怀疑sum会尝试将0添加到列表[1],导致失败.我确信有很多黑客可以解决这个限制(在一个类中包装东西,并手动实现__radd__),但有更优雅的方法吗?

解决方法

看起来你想要这个:

>>> sum([[1],[2]],[])
[1,2]

你是对的,它试图将0添加到[1]并收到错误.解决方案是给sum一个额外的参数给出起始值,对于你来说这将是空列表.

编辑:正如gnibbler所说,sum并不是连接事物的好方法.如果你只想聚合一系列事物,你应该使用reduce而不是自己的__radd__函数来使用sum.这是一个例子(与sum相同的不良行为):

>>> reduce(lambda x,y: x+y,[[1],[2]])
[1,2]

(编辑:李大同)

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

    推荐文章
      热点阅读