我有一个int
的列表,我想对所有这些值加总。
这样做的简单方法是:
[x+y for x in my_list]
有更高效/ pythonic的方法吗?
答案 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
时才有意义。