我想知道如果我想对两个名为l1和l2的列表中的元素(元素的元素)求和,最好做什么:
l3 = [i + j for i, j in zip(l1,l2)]
或将列表转换为数组并进行简单求和
from numpy import array
l3 = list(array(l1) + array(l2))
答案 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做的最好的事情......