python - map(sum,zip(*list)) 是对任意长度列表的列求和的最快方法吗?

标签 python performance list optimization

我想知道是否有人可以建议一种比 map(sum, zip(*list)) 更快的列表求和方法。

例子:

import timeit

print timeit.Timer('''
[ (a[x]+b[x]+c[x]) for x in xrange(len(a)) ]
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
''').timeit(number = 1000)

print timeit.Timer('''
map(sum,zip(*d))
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
d = [a,b,c]''').timeit(number = 1000)

print timeit.Timer('''
[sum(x) for x in zip(*d)]
''', '''
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
d = [a,b,c]''').timeit(number = 1000)

结果:

0.0317891459248 #list comprehension
0.0406545608382 #sum with zip
0.0532605665307 #map sum with zip

注意:我知道我在吹毛求疵,但我只是想知道是否有人有更好的建议。

最佳答案

这个怎么样?

print timeit.Timer('''
d.sum(axis=0)
''', '''
import numpy as np
a = range(200)
b = range(199,-1,-1)
c = range(1,201)
d = np.array([a,b,c])''').timeit(number = 1000)

当然,这假设您的列表包含某种数字类型...

关于python - map(sum,zip(*list)) 是对任意长度列表的列求和的最快方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563146/

相关文章:

c++ - 提高 Windows 应用程序的性能

python - 根据条件从嵌套列表中删除某些子列表

c++ - 列出 STL C++ 结构

c# - 为什么将 List 转换为 Array 而不是在 C# 中引用?

重复直到返回值不为 None 的 Pythonic 方式

PHP:重用对象或复制到数组中更快吗

c++ - 访问指针的速度

python - 如何从字典中获取值列表?

Python C-API 段错误

python - 处理 settrace 'return' 调用中的异常