最佳化數字位數的求和
找出數字中各個數字的總和是一項常見的程式設計任務。存在多種解決此問題的方法,每種方法都有不同的性能特徵。
提供的 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中文網其他相關文章!