和函数与长加法

2024-10-04 11:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道sum()内建函数在长时间加法上是否有andventage?在

sum(filter(None, [a, b, c, d]))

^{pr2}$

假设我用的是CPython?在

谢谢

编辑:如果这些变量是小数怎么办?在


Tags: none编辑filtercpythonsum小数pr2内建函数
1条回答
网友
1楼 · 发布于 2024-10-04 11:30:44

一个简单的例子(注意,sum版本采用了tuple参数,因此不包括构建该结构的时间(a, b, c, d),也不包括不必要的filter):

>>> import timeit
>>> def add_up(a, b, c, d):
    return a + b + c + d

>>> def sum_up(t):
    return sum(t)

>>> t = (1, 2, 3, 4)
>>> timeit.timeit("add_up(1, 2, 3, 4)", setup="from __main__ import sum_up, add_up, t")
0.2710826617188786
>>> timeit.timeit("sum_up(t)", setup="from __main__ import sum_up, add_up, t")
0.3691424539089212

这几乎是不可避免的-add_up没有任何函数调用开销,它只做3个二进制加法。但是不同的形式有不同的用途-sum不关心给它多少项,而你必须用+写出每个名称。在一个具有固定数量的项目的例子中,速度至关重要,+具有优势,但对于几乎所有的一般情况,sum是最好的选择。在

使用Decimals:

^{pr2}$

相关问题 更多 >