首頁  >  文章  >  後端開發  >  在 Python 中對數字求和的最快方法是什麼?

在 Python 中對數字求和的最快方法是什麼?

Patricia Arquette
Patricia Arquette原創
2024-11-24 02:53:10760瀏覽

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