Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求二维和的最简单方法?(Python)_Python_List_Int_Sum_Dimension - Fatal编程技术网

求二维和的最简单方法?(Python)

求二维和的最简单方法?(Python),python,list,int,sum,dimension,Python,List,Int,Sum,Dimension,我需要两个维度求和的帮助 假设我有[[0,1,2],[3,4,5]]作为维度,将这些数字相加将返回int 15 def sum_dimensions(x): x = [] answer = sum(x) return int(x) 指出我在代码中的错误非常感谢。这就是您要寻找的: data = [[0,1,2],[3,4,5]] sum([sum([item for item in ele]) for ele in data]) 15 正如@f

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

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

   def sum_dimensions(x):
       x = []
       answer = sum(x)
       return int(x)

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

这就是您要寻找的:

data = [[0,1,2],[3,4,5]]
sum([sum([item for item in ele]) for ele in data])
15
正如@filmor所指出的,这可以简化为:

data = [[0,1,2],[3,4,5]]
sum([sum(ele) for ele in data])
15
至于您的代码,如果您将
[[0,1,2],[3,4,5]]
作为
x
传递给函数:

answer = sum(x)
将抛出一个
TypeError
。以下

return int(x)
也没有道理。使代码正常工作的方法是:

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)
这是Python,不是C

ar = [[0,1,2],[3,4,5]]
result = sum ( [sum(block) for block in ar] )

如果你在做其他线性代数,可能值得考虑
numpy

import numpy as np

x = np.array( [[0,1,2],[3,4,5]] )
print np.sum(x)
试试这个

>>>sum([sum(i) for i in [[0,1,2],[3,4,5]]])
输出:

15

让我们来讨论一下。我在我的机器上使用了以下数据集:

data = list(list(range(100000)) for i in range(1000))
我有以下结果:

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)
构造您可以尝试以下方法:

>>> l = [[0,1,2],[3,4,5]]
>>> 
>>> sum(a for v in l for a in v)
15
可以使用,也可以使用:


sum([item for item in ele])
可以写成
sum(ele)
。或者
sum(j代表i,数据中的j代表i)
更好,是:)这将在大型阵列上消耗额外的资源。当性能可能成为一个问题时,你应该寻找方法用调用
math
itertools
来替换Python循环。具体是什么?M4rtini的解决方案?我更喜欢不使用Numpy。忘了提了!这是关于过早优化的吗?嘿,我想是生成器的总和pression会比这更有效。很高兴知道!@Hyperboreus No。但是这项任务非常简单,并且允许具有相同代码复杂度的多个解决方案。因此,值得研究它们之间的比较,不是吗?例如,有趣的是,看到i结构中的j的数据中的i的
j执行得有多糟糕,我没有预料到谢谢你的回复。
a = [[0,1,2],[3,4,5]]
sum(map(sum, a)) #15