首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对两个维度求和的最简单方法?(Python)

对两个维度求和的最简单方法?(Python)
EN

Stack Overflow用户
提问于 2014-04-05 04:05:14
回答 7查看 113关注 0票数 2

我需要对两个维度求和的帮助。

假设我有[0,1,2,3,4,5]作为我的维度,将这些数字相加将返回int 15。

代码语言:javascript
运行
复制
   def sum_dimensions(x):
       x = []
       answer = sum(x)
       return int(x)

感谢您指出我在代码中的错误。

EN

回答 7

Stack Overflow用户

发布于 2014-04-05 04:17:37

让我们深入了解一下这个问题。我在我的机器上使用了以下数据集:

代码语言:javascript
运行
复制
data = list(list(range(100000)) for i in range(1000))

我得到了以下结果:

代码语言:javascript
运行
复制
In [13]: %%timeit                                             
sum(sum(ele) for ele in data)
   ....: 
1 loops, best of 3: 1.15 s per loop

In [14]: %%timeit                                             
sum([sum([item for item in ele]) for ele in data])
   ....: 
1 loops, best of 3: 3.78 s per loop


In [15]: %%timeit                                             
sum(j for i in data for j in i)
   ....: 
1 loops, best of 3: 4.92 s per loop

In [16]: %%timeit                                             
sum(itertools.chain.from_iterable(data))
   ....: 
1 loops, best of 3: 1.61 s per loop

In [18]: %%timeit
sum(map(sum, data))
   ....: 
1 loops, best of 3: 1.16 s per loop

然而,对于较小的数据集,itertools变体比sum(sum变体快2倍。sum(map(sum似乎精确地映射到sum(sum(ele) for ele in data)构造

票数 5
EN

Stack Overflow用户

发布于 2014-04-05 04:06:44

这就是您要查找的内容:

代码语言:javascript
运行
复制
data = [[0,1,2],[3,4,5]]
sum([sum([item for item in ele]) for ele in data])
15

正如@filmor所指出的,这可以简化为:

代码语言:javascript
运行
复制
data = [[0,1,2],[3,4,5]]
sum([sum(ele) for ele in data])
15

至于您的代码,如果您将[[0,1,2],[3,4,5]]作为x传递给函数:

代码语言:javascript
运行
复制
answer = sum(x)

会抛出一个TypeError。以下是

代码语言:javascript
运行
复制
return int(x)

这也说不通。让你的代码正常工作的方法是:

代码语言:javascript
运行
复制
def sum_dimensions(x):
   answer = sum(x)
   return answer

data = [[0,1,2],[3,4,5]]
total_sum = 0
for sub_list in data:
    total_sum += sum_dimensions(sub_list)
票数 0
EN

Stack Overflow用户

发布于 2014-04-05 04:08:05

它是Python,不是C。

代码语言:javascript
运行
复制
ar = [[0,1,2],[3,4,5]]
result = sum ( [sum(block) for block in ar] )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22872065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档