python将值汇总到列表中的所有元素

时间:2018-06-15 13:21:00

标签: python python-3.x

我有一个int的列表,我想对所有这些值加总。 这样做的简单方法是:

[x+y for x in my_list]

有更高效/ pythonic的方法吗?

2 个答案:

答案 0 :(得分:1)

不,到目前为止,列表理解速度最快。

证明here map表现更差,除了少数情况,其中map只是在显微镜下更好。

然而,这取决于具体情况。例如,如果您在Spark RDD上运行它,则lambda将允许并行化。

如果您不需要新列表,生成器表达式也可以节省内存。

答案 1 :(得分:1)

我认为你拥有它的方式与Pythonic一样,你可以使用列表。我能想到的任何其他选择都会牺牲效率或易读性。您可以执行类似

的操作
list(map(y.__add__, my_list))

OR

list(map(partial(operator.add, y), my_list))

如果您使用像numpy这样的外部依赖:

list(np.array(my_list) + y)

但这本身并不是更有效率。只有你想要np.array(my_list)并且没有转换回list时才有意义。