首页  >  文章  >  后端开发  >  在 Python 中对数字求和的最快方法是什么?

在 Python 中对数字求和的最快方法是什么?

Patricia Arquette
Patricia Arquette原创
2024-11-24 02:53:10764浏览

What's the Fastest Way to Sum the Digits of a Number in Python?

优化数字位数的求和

查找数字中各个数字的总和是一项常见的编程任务。存在多种解决此问题的方法,每种方法都有不同的性能特征。

提供的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn