我需要对两个维度求和的帮助。
假设我有[0,1,2,3,4,5]作为我的维度,将这些数字相加将返回int 15。
def sum_dimensions(x):
x = []
answer = sum(x)
return int(x)
感谢您指出我在代码中的错误。
发布于 2014-04-05 04:17:37
让我们深入了解一下这个问题。我在我的机器上使用了以下数据集:
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)
构造
发布于 2014-04-05 04:06:44
这就是您要查找的内容:
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)
发布于 2014-04-05 04:08:05
它是Python,不是C。
ar = [[0,1,2],[3,4,5]]
result = sum ( [sum(block) for block in ar] )
https://stackoverflow.com/questions/22872065
复制相似问题