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

Python 使用zip或数组对列表执行操作,python,list,numpy,sum,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)) 这可能取决于名单有多大 numpy是为对大型数据集进行高效操作而设计的,但由于它不是本机Python的一部分,因此引入了一些恒定的开销 此外,如果你想要表现,可能会给你更好的速度

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

l3 =  [i + j for i, j in zip(l1,l2)]
或者将列表转换为数组并进行简单求和

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

这可能取决于名单有多大

numpy
是为对大型数据集进行高效操作而设计的,但由于它不是本机Python的一部分,因此引入了一些恒定的开销

此外,如果你想要表现,可能会给你更好的速度



对于随机列表,我可能会使用
[I+j表示I,j在izip(l1,l2)]
,因为简单性/可读性,假设它们不够大,无法带来显著的性能问题。

这可能取决于列表的大小

numpy
是为对大型数据集进行高效操作而设计的,但由于它不是本机Python的一部分,因此引入了一些恒定的开销

此外,如果你想要表现,可能会给你更好的速度


对于随机列表,我可能会使用
[I+j表示izip(l1,l2)中的I,j]
,因为简单性/可读性,假设它们不够大,无法带来显著的性能问题。

您还可以使用:

from operator import add
map(add, list1, list2)
这使用了可能优化的
操作符。添加
并避免使用
zip
/
izip
,后者会将输入截断为最短的序列,从而允许错误以静默方式失败,而
map
(well
operator.add
)将引发异常

可能是在纯Python中所能做的最好的…

您还可以使用:

from operator import add
map(add, list1, list2)
这使用了可能优化的
操作符。添加
并避免使用
zip
/
izip
,后者会将输入截断为最短的序列,从而允许错误以静默方式失败,而
map
(well
operator.add
)将引发异常


在纯Python中可能是最好的…

什么是最好的?表演代码清晰?numpy几乎肯定会是我在速度和内存使用方面思考的最快的方式。在什么方面最好?表演代码清晰性?numpy几乎肯定会是我从速度和内存使用的角度考虑的更快的方式,而不是考虑numpy@jamylak这就是为什么我提到“在纯Python中”,我只是在澄清我的评论,你的回答很好。我没有+1这个,因为我不喜欢它的可读性最差,但在某些情况下它可能有用,也就是说,不考虑numpy@jamylak这就是为什么我提到“在纯Python中”,我只是在澄清我的评论,你的回答很好。我没有+1这个,因为我不喜欢它的可读性最低,但在某些情况下它可能是有用的