Python 使用zip或数组对列表执行操作
我想知道如果我想对两个名为l1和l2的列表中的元素(元素对元素)求和,最好的方法是什么: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的一部分,因此引入了一些恒定的开销 此外,如果你想要表现,可能会给你更好的速度
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
(welloperator.add
)将引发异常
可能是在纯Python中所能做的最好的…您还可以使用:
from operator import add
map(add, list1, list2)
这使用了可能优化的操作符。添加并避免使用zip
/izip
,后者会将输入截断为最短的序列,从而允许错误以静默方式失败,而map
(welloperator.add
)将引发异常
在纯Python中可能是最好的…什么是最好的?表演代码清晰?numpy几乎肯定会是我在速度和内存使用方面思考的最快的方式。在什么方面最好?表演代码清晰性?numpy几乎肯定会是我从速度和内存使用的角度考虑的更快的方式,而不是考虑numpy@jamylak这就是为什么我提到“在纯Python中”,我只是在澄清我的评论,你的回答很好。我没有+1这个,因为我不喜欢它的可读性最差,但在某些情况下它可能有用,也就是说,不考虑numpy@jamylak这就是为什么我提到“在纯Python中”,我只是在澄清我的评论,你的回答很好。我没有+1这个,因为我不喜欢它的可读性最低,但在某些情况下它可能是有用的