對數字求和:探索有效的方法
當旨在確定數字輸入中的數字總和時,可以使用各種方法被雇用。雖然最初的直覺可能會導致使用基於字串的方法,將數字轉換為字串,然後對每個單獨的數字應用數學運算,但這種方法可能不是最佳的。
更有效的技術在於操弄整數形式的數字。這可以透過 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
此外,還可以利用單一賦值語句將求和與除法結合起來,以提高執行速度操作:
def sum_digits3(n): r = 0 while n: r, n = r + n % 10, n // 10 return r
對這些方法進行基準測試表明,取模和除法方法優於字串操作技術,而單一賦值版本成為最快的選項:
%timeit sum_digits(n) 1000000 loops, best of 3: 574 ns per loop %timeit sum_digits2(n) 1000000 loops, best of 3: 716 ns per loop %timeit sum_digits3(n) 1000000 loops, best of 3: 479 ns per loop %timeit sum(map(int, str(n))) 100000 loops, best of 3: 1.42 us per loop %timeit sum([int(digit) for digit in str(n)]) 100000 loops, best of 3: 1.52 us per loop %timeit sum(int(digit) for digit in str(n)) 100000 loops, best of 3: 2.04 us per loop
因此,當尋求對數字的數字進行有效求和時,建議選擇模除技術甚至單賦值變體以獲得最佳性能。
以上是對數字進行求和的最有效方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!