【问题标题】:How does python sum of a 2d array return a list二维数组的python总和如何返回一个列表
【发布时间】:2020-06-27 04:38:45
【问题描述】:

我遇到了一段 python 代码,其中 2d 数组的 sum 函数计算为一个列表。

例如:

a = [['a','b','c'],['d','e','f'],['g','h','i']]]

sum(a,[]) 返回['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

为什么会这样?也许我错过了一些基本的东西,但想了解它的机制。

【问题讨论】:

  • Sum 添加您放入其中的组件。您拥有的数组是 3 个列表的列表,因此当您使用 sum 函数时,它会组合这 3 个列表。
  • Ethan - @Nick 的答案(已接受的答案)用一个空数组初始化总和,[],在这种情况下是为我澄清它的关键。

标签: python arrays list sum


【解决方案1】:

sum(iterable, /, start=0):

从左到右对一个可迭代的项目进行求和并返回总数

所以对于你的代码,sum产生的操作是

[] + ['a','b','c'] + ['d','e','f'] + ['g','h','i']

这是一个列表连接,并产生:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

请注意,如果您不提供 []start 值,sum 将使用默认的 start0 并执行:

0 + ['a','b','c'] + ['d','e','f'] + ['g','h','i']

导致TypeError:

TypeError:+ 的不支持的操作数类型:“int”和“list”

【讨论】:

  • 谢谢你,@尼克。这个解释很有帮助。
  • @Nrupesh 不用担心 - 我很高兴它有用。
【解决方案2】:

希望你能像这里一样简单地理解它

a = [['a','b','c'],['d','e','f'],['g','h','i']]

它是这样做的:

result = []
for list in a:
    result += list

现在返回结果列表:

print(result)

我还告诉你,上面的方法比 sum(a, []) 方法快

Sum 函数不是这样工作的,但你可以很容易地理解它是如何工作的

【讨论】:

  • 对不起,Kartikey,这个解释没有帮助。请查看我接受的@Nick 的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2018-01-17
相关资源
最近更新 更多