优化数字位数的求和
查找数字中各个数字的总和是一项常见的编程任务。存在多种解决此问题的方法,每种方法都有不同的性能特征。
提供的 Python 代码段使用 sum(int(digit) for digital in str(number)) 将数字转换为字符串并迭代其各个数字。使用 sum(map(int, str(number))) 的替代解决方案通过将每个数字映射到一个整数然后对它们求和来实现相同的结果。
虽然这些方法很简单,但更有效的实现可以是通过完全对整数进行操作来实现。以下代码片段使用 while 循环迭代每个数字:
def sum_digits(n): s = 0 while n: s += n % 10 n //= 10 return s
使用 divmod 的另一种变体将数字拆分为商和余数:
def sum_digits2(n): s = 0 while n: n, remainder = divmod(n, 10) s += remainder return s
性能测量显示这些基于整数的解决方案比基于字符串的替代方案要快得多:
Function | Time Per Loop |
---|---|
sum_digits3 | 479 ns |
sum_digits | 574 ns |
sum_digits2 | 716 ns |
sum(map(int, str(n))) | 1.42 us |
sum([int(digit) for digit in str(n)]) | 1.52 us |
sum(int(digit) for digit in str(n)) | 2.04 us |
因此,为了获得最佳速度,它建议使用本讨论中介绍的基于整数的方法之一。
以上是在 Python 中对数字求和的最快方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!