使用zip或数组对列表进行操作

时间:2012-07-12 15:55:45

标签: python list numpy sum

我想知道如果我想对两个名为l1和l2的列表中的元素(元素的元素)求和,最好做什么:

l3 =  [i + j for i, j in zip(l1,l2)]

或将列表转换为数组并进行简单求和

from numpy import array
l3 = list(array(l1) + array(l2)) 

2 个答案:

答案 0 :(得分:4)

这可能取决于列表的大小。

numpy旨在对大型数据集进行有效操作,但会引入一些不断增加的开销,因为它不是本机Python的一部分。

另外,如果你想要表现,itertools.izip可能会提高你的速度。


对于随机列表,由于简单性/可读性,我可能会使用[i+j for i,j in izip(l1, l2)],假设它们不够大,无法对性能产生重大影响。

答案 1 :(得分:0)

你也可以使用:

from operator import add
map(add, list1, list2)

这使用了可能已优化的operator.add,并避免使用zip / izip,这会将输入截断为最短序列,从而允许错误无声地失败 - 同时map(well { {1}})会引发异常。

你可以用纯Python做的最好的事情......